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的數據】

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章