可以說一個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. 確定VB.net中mp3文件的長度(以毫秒爲單位)
- 2. 時間以毫秒爲單位計算
- 3. 時間選擇器以毫秒爲單位以毫秒爲單位計算出錯誤的值
- 4. TimePicker以毫秒爲單位倒計時
- 5. 如何確定.gif動畫的長度(以毫秒爲單位)
- 6. 如何從幀的長度(以毫秒爲單位)查找音符的幀長,字節和整數
- 7. NetStream.seek以毫秒爲單位
- 8. TimeSpan.ParseExact以毫秒爲單位
- 9. 以毫秒爲單位計算值的總和
- 10. 以毫秒爲單位的TImespan,以分鐘和秒爲單位
- 11. AS3讓「時間」以毫秒爲單位的MP3
- 12. 如何計算以毫秒爲單位執行時間
- 13. 以毫秒爲單位檢測秒數
- 14. Javascript:以毫秒爲單位的日期
- 15. 以毫秒爲單位的序列號
- 16. 以毫秒爲單位的甘特圖
- 17. 以秒爲單位計算時間差
- 18. 篩選日期以毫秒爲單位
- 19. 關於以毫秒爲單位
- 20. 無法以毫秒爲單位
- 21. wxMathPlot x軸以毫秒爲單位?
- 22. Mongodb時間戳,以毫秒爲單位
- 23. MySQL以毫秒爲單位存儲TIMESTAMP
- 24. 花費時間以毫秒爲單位
- 25. 如何以秒爲單位返回以毫秒爲單位的日期?
- 26. Javascript:如何計算以毫秒爲單位的一天的開始?
- 27. 如何比較兩次以毫秒爲單位的精度?
- 28. c中的時間戳以毫秒爲單位精度
- 29. Python:以毫秒爲單位計算日期時間的平均值
- 30. 以毫秒爲單位計算C程序中的已用時間
我會說比特率是關鍵。 CBR最簡單,VBR將要求您注意費率變化。 – sehe 2011-06-02 21:44:41
你爲什麼需要這些信息? – Andrei 2011-06-02 21:52:12
我需要解釋爲什麼? – SolidSnake 2011-06-02 21:54:51