我正在製作能夠播放目標廣告的流媒體服務器。基本上聽衆聽到的是同樣的音樂,但是每隔30分鐘就會有一塊廣告,每個聽衆都有自己的音樂。實現這樣的流媒體服務器帶來了各種問題,這個問題是關於其中之一的。如何無縫連接MP3流?
服務器將以類似於Icecast的方式工作,即它將從某個流生成器通過網絡讀取流並將其中繼給每個聽衆。當需要廣播廣告時,服務器會停止從生成器中獲取流,從文件中讀取廣告並將其插入每個聽衆的緩衝區,然後傳輸它們並從發生器中繼流繼續。
當服務器從中繼流切換到廣播廣告時,它必須連接兩個MP3流(我們用MP3播放)。我擔心的是,簡單地將一段數據附加在一起可能會產生一些可聽到的文物。它可以無縫地完成嗎?
我已經想通了: - 我可以讓服務器知道MP3幀以避免同步錯誤。 - 我正在考慮在流中的MP3幀之後從廣告文件中追加MP3幀。 - 由於廣告是從正確編碼的MP3文件加載的,因此我避免了字節庫的問題,因爲文件的第一幀無法使用它。
但我關心的是MDCT的工作方式。聽衆不知道我的服務器會做什麼,所以他們的MP3解碼器可能會產生一些文物,因爲不正確的MDCT數據將被一個接一個地放在他們下載的流中。在廣告文件的開頭將零填充補償這一點嗎?
您是否知道任何可以無縫連接兩個MP3文件而無需解壓縮的庫/工具(如果可能,開放源碼)?
你能指出任何描述MP3格式的好資源嗎?我搜索了很多互聯網,發現了很多信息,但我仍然想念整個畫面。
也許你知道,如果我使用另一個像OGG/Vorbis,AAC這樣的編解碼器,這會更容易些。
PS。這個問題不是What is the best way to merge mp3 files?的重複。 mp3wrap和工具都不是我的選擇。
這樣的API可能計算起來太昂貴了。我工作的電臺已經有5萬用戶/服務器的高峯流量。即使只有一秒鐘的音樂,我必須爲每個聽衆處理,這是超過一小時的音樂解壓縮/壓縮在任何時間... – Jasiu 2009-05-17 20:46:07
我不知道它肯定會...你應該真的做一些更深入的調查,因爲DirectShow是*在Windows上用於媒體內容的方式。 – Noldorin 2009-05-17 20:59:40