日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何计算MP3总时长的问题(三)--对于变比特率MP3求总时长

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何计算MP3总时长的问题(三)--对于变比特率MP3求总时长 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? 3、變比特率MP3總時長求解

???????? 之前我們所討論的都是對于一個固定比特率(CBR)的MP3進行求總時長,由于固定比特率的特殊性,很容易第一幀的幀頭就能知道整個MP3的信息,但是對于變比特率(VBR)的MP3,比特率和幀長都不是固定的,所以我們就不能用之前的公式來計算總時長。

???????? 其實在第一幀的幀頭后面還存著VBR的一些信息,里面存著文件長度,總幀數等信息,從而使我們很快算出變比特率的總時長,方法如下:

??????? 1)XING頭標志

由于VBR是XING公司推出的算法,所以在MP3的第一幀里會有"XING"或者"Info"的關鍵字,具體格式

???????????? 位置????? 長度(字節)????????????????????????????????????? 含義
04包含ASCII的字符XING或者Info,沒有NULL結尾
44

標識位

0x0001 - 存在總幀數(Frames)字段
0x0002 - 存在文件大小(Bytes)字段
0x0004 –存在 TOC字段?
0x0008 – 存在音頻質量指示字段

84若標識位存在總幀數,那么這四個字節就是總幀數
124若標識位存在文件大小,那么這四個字節就是文件大小

還有別的信息,這里不需要,我就不在這里說了。

???????? 2) VBRI頭標志

還有一種頭也同樣標識和XING類似,只是有"VBRI"的關鍵字,具體格式

???????? 位置??? 長度(字節)????????? 含義
04包含ASCII的字符VBRI,沒有NULL結尾
104文件大小
144總幀數

我只寫了對總時長有需要的位置,其他的暫時沒用到,就不提了,不過可以討論。

??? 3)確定標志頭位置

? 知道的有這樣的標志頭可以幫助我們很快找到需要的信息,那么如何定位呢,公式如下:

標志頭位置 = MPEG 頭位置 +? MPEG幀頭大小(4字節)+ 邊信息大小
對于邊信息,我們可以根據頭中所給J位置上2個字節得到

mode = (header>>6)&0x03

其中:'00'? Stereo; '01'? Joint Stereo (Stereo);?? '10'? Dual channel (Two mono channels);

???????????? '11'? Single channel (Mono).

???????????????????????????????????????????????????????????????????????????? MPEG 1?????????????????????????????????? MPEG2/2.5

Stereo ,Joint Stereo? Dual channel????????? 32??????????????????????????????????????????????????? 17

Mono??????????????????????????????????????????????????????????????????? 17????????????????????????????????????????????????????? 9

現在已經很清楚了,我們就能定位出來頭標志,然后讀出我們需要的總幀數,之前一屆我已經介紹了每幀持續時間,因此

VBR的MP3總時長(毫秒) =? 總幀數*每幀持續時間

?

到此不知道我講的清楚不清楚,這也是我通過自己做,和看別人的文檔總結的一些,希望能幫助到需要的人,有什么問題可以和我討論。

???????? 這個準確度還是比較高的,前提是從幀頭中讀到的信息是正確有效的,呵呵,我測得大部分MP3還是比較正確的,如果真的要準確,那就預讀一遍MP3文件,把每一幀的找到,累加得到幀數,我做MP3幀索引表的時候就這么搜的,其實對于小文件還是比較快的。

轉載于:https://www.cnblogs.com/candycaicai/archive/2010/11/26/1889085.html

總結

以上是生活随笔為你收集整理的如何计算MP3总时长的问题(三)--对于变比特率MP3求总时长的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。