可以說一個MP3以字節爲單位的幀長度爲104:如何以毫秒爲單位獲得該值?有沒有公式或什麼可以做到這一點?以毫秒爲單位計算MP3幀的長度
回答
我用不同的方法來計算的MP3文件中的每一幀的時間.. 假設所有幀具有文件相同的大小..所以我只是得到以毫秒爲單位的MP3文件的總時間..然後計算文件中的總幀數,最後由總幀數把總的時間..所以公式看起來像:
float frameTime = totalTimeMillisec/totalFrames;
你會得到每幀的總時間以毫秒爲單位的軌道.. 我完成後,我得到了52毫秒左右...這和Mark Heath說的類似。
反正謝謝大家的解決方案..
框架與時間不一樣。但如果你知道總大小,你可以做這樣的開銷+幀*時間=總大小。
我有幀長度,我有MP3文件的總長度時間..但我需要以毫秒爲單位獲得每幀的時間..例如,如果我得到20個MP3幀我得到1K毫秒左右,這意味着1秒..如何完成這 – SolidSnake 2011-06-02 21:42:12
http://www.mp3-converter.com/mp3codec/frames.htm FrameSize = 144 * BitRate /(SampleRate + Padding) – Mikhail 2011-06-03 08:40:08
http://en.wikipedia.org/wiki/MP3有一個關於MP3文件結構的條目,但你應該嘗試找到一個更多的細節。
幀頭包含一個稱爲比特率的字段。鑑於此比特率和幀數據大小,您可以確定該幀數據中實際的音樂時間。我期望公式爲:DataSize = BitRate * TimeInterval。有關比特率編碼的詳細信息,請參閱http://www.mp3-tech.org/programmer/frame_header.html。
我不需要數據大小..我只需要總數該框架的時間.. – SolidSnake 2011-06-02 22:56:46
...你通過一個部門獲得。 – Andrei 2011-06-03 21:27:58
您需要解析MP3幀頭以獲取MP3版本和圖層號(請參閱this document獲取幀頭格式)。一旦你有了這些,你可以使用下面的查找表來獲取幀中的樣本數量。
private static readonly int[,] samplesPerFrame = new int[,] {
{ // MPEG Version 1
384, // Layer1
1152, // Layer2
1152 // Layer3
},
{ // MPEG Version 2 & 2.5
384, // Layer1
1152, // Layer2
576 // Layer3
}
};
好..它的MPEG版本1和圖層是1152現在我應該添加那個來獲得幀的總時間? – SolidSnake 2011-06-02 22:54:53
也可以從MP3標頭中找出採樣率。採樣率是每秒採樣數,所以樣本數除以採樣率就是幀的持續時間。 (如果你不得不考慮頻道數量,我記不清楚,我想你是這麼做的,所以對於立體聲,你可以先將樣本數量減半) – 2011-06-02 23:02:11
嗯,現在我做了你所說的我但我總是得到「0」..這是我所做的,「mp3Frame.SampleCount/mp3Frame.SampleRate」.. btw,mp3Frame.SampleCount = 576和mp3Frame.SampleRate = 11025 ..也許我需要乘以SampleCount by 2? – SolidSnake 2011-06-02 23:12:54
由於數據是加密的,你不能知道玩比特率,直到數據已經被解密。 沒有人會說如何加密(壓縮)和解壓縮數據。 我所知道的是,Lame程序將採取一個波形文件,然後過濾/重新採樣它然後以某種方式壓縮數據,然後將其放入幀中。我不知道這些MP3播放器是否使用8位或16位字在每個通道播放。但是,比特率和全部都與通道字節的大小和播放的採樣率有關。與數據首先輸入到編碼器不同。 如何查看玩家發揮的最終結果是這裏的訣竅。 CBR爲後來學習VBR做了很好的參考。
如何取一個樣本的一個通道的16位(每個樣本的WORD)併爲MP3數據壓縮ot?結果是12位還是更少? 壓縮程序調用什麼?
加密?你的意思是壓縮?你的回答有點混亂。 – nalply 2012-10-10 19:45:51
嗯,這很奇怪,但沒有人正確回答這個問題。我已經研究,這裏的式:
幀長度(毫秒)=(每幀/採樣率樣品(以Hz))* 1000
典型MP3(一個MPEG層III,第1版)每幀有1152個採樣,採樣率(通常)爲44100赫茲。因此(1152/44100)* 1000 =每幀26,122449毫秒。
注意幀長度(時間)不取決於比特率。
- 1. 以毫秒爲單位的mp3長度
- 2. 確定VB.net中mp3文件的長度(以毫秒爲單位)
- 3. 時間以毫秒爲單位計算
- 4. 時間選擇器以毫秒爲單位以毫秒爲單位計算出錯誤的值
- 5. TimePicker以毫秒爲單位倒計時
- 6. 如何確定.gif動畫的長度(以毫秒爲單位)
- 7. 如何從幀的長度(以毫秒爲單位)查找音符的幀長,字節和整數
- 8. NetStream.seek以毫秒爲單位
- 9. 以毫秒爲單位的TImespan,以分鐘和秒爲單位
- 10. AS3讓「時間」以毫秒爲單位的MP3
- 11. Javascript:以毫秒爲單位的日期
- 12. Mongodb時間戳,以毫秒爲單位
- 13. 關於以毫秒爲單位
- 14. 無法以毫秒爲單位
- 15. MySQL以毫秒爲單位存儲TIMESTAMP
- 16. 花費時間以毫秒爲單位
- 17. 篩選日期以毫秒爲單位
- 18. 如何以秒爲單位返回以毫秒爲單位的日期?
- 19. 如何比較兩次以毫秒爲單位的精度?
- 20. 以毫秒爲單位計算C程序中的已用時間
- 21. 將以毫秒爲單位的unix秒數轉換爲POSIXct/POSIXlt
- 22. Javascript以毫秒爲單位顯示毫秒數:小時:無秒數分鐘
- 23. 以毫秒爲單位創建倒計時器
- 24. Python:解析時間戳和計算時間差(以毫秒爲單位)
- 25. 計算MP3長度的相應旋轉
- 26. 轉換「時間」,「單位」,以毫秒爲單位
- 27. 如何計算對象的寬度,高度或長度(以像素爲單位)?
- 28. DateTime中的3位數字,以毫秒爲單位
- 29. 如何查找音頻文件的長度(以秒爲單位)
- 30. 以分鐘/秒爲單位獲取wav音頻的長度
我會說比特率是關鍵。 CBR最簡單,VBR將要求您注意費率變化。 – sehe 2011-06-02 21:44:41
你爲什麼需要這些信息? – Andrei 2011-06-02 21:52:12
我需要解釋爲什麼? – SolidSnake 2011-06-02 21:54:51