wma的文件位流结构篇1

1.wma文件是由asf封装的位流数据。

2一个asf容器,包含了 一个asf标志头,文件头指示了包的大小cbPacketSize,位流头。通过位流头,再确定是否为音频流头。如果是音频流的头,则可以进行格式判断。

3,可以读取audio_id,获取格式信息。 包括 采样率,比特率,block对齐长度,

4,一个包里面可以包含一个或者多个负载。这些负载可以来自不同的流信息。

在asf的头里面记录了packet的数据长度,本包的帧个数,帧大小。

5,packet的数据内容为帧,而一个帧可以分成多个 block的位流。 同一个block的数据,可以跨包存储。packet前面会记录有多少bit是属于上一个packet的。

解包流程:

解包头,获取数据---> 解帧头-->解帧(解block)

 

1、因为拆包的时候,包很可能不是按block的整数倍拆分的,所以包含上一包的数据。在帧头里面会有信息指出本包完整帧的起始位置。每一个的bit也可以不是byte对齐的,如第7点

2.本包解码的时候 本包的位流不一定耗尽,如果是非跨包存储的格式[flag2],需要丢弃。

3.每包的第一个完整block会重新reset_block_size

4.关系:文件组织的基本结构是cbPacketSize,它里面包含 n个segment的数据,如果是audio_seg的话,它的有效数据长度为nBlockAlign。

5.wma的bitrate是纯数据的比特流,不包含asf的消耗,所以要估计实际文件的比特率的话,需要计算下冗余度。

6.帧头的格式是: u8【包含帧数】+u16【前面是first_frame_bit【代表起始位置】,后面【13-nbsize】bit是属于block的数据】

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值