2011-09-16 33 views
2

我希望有人可以給我的指針,我有一個PHP腳本運行下面的命令來記錄一個實時廣播MP3流來創建長達一小時的MP3錄音。它對我的目的非常有效。唯一的問題是偶爾不做記錄。據我可以告訴它,因爲流已經退出,ffmpeg只是中止。錄製一個MP3流與FFMPEG和丟失

/usr/local/bin/ffmpeg -i http://www.mystream.com:8000/radiostream.mp3 -t 60:00 -acodec copy /var/www/mydomain/audio/".$recorded_audio_title; 

所以我的問題,反正是有告訴FFMPEG爲60:00分鐘連續記錄,使即使他們是輟學的記錄?如果完成了錄音,我會很高興有一點沉默。

我希望這是有道理的,我甚至會欣賞一個指向FFMPEG選項或標誌的指針。通過谷歌我很高興看到任何符合法案的東西。

提前

+0

你想通過沉默來完成下跌流得到確切60分鐘長的錄音? –

+0

不,理想情況下,它可以在流重新連接時繼續記錄流。輟學往往只是很短。雖然作爲一個開始,如果沒有其他替代品可用,那麼全長錄音(即使有些/大部分是沉默)將比沒有更好。 –

+0

@Rob,你應該通過使用數據包嗅探器來驗證數據流是否工作正常。確保它是一個連接錯誤或阻止你的東西。另外,你可以考慮用簡單的WGET來實現同樣的事情,並在60分鐘後停止。由於服務器最初會推送一個緩衝區(通常爲1MB),因此它不會爲您準確* 60分鐘,因此您可能會獲得60分鐘+ 1MB左右的時間。另外,不要擔心最後的MP3損壞。任何我用過這種方法的玩家都可以處理它。 – Brad

回答

0

非常感謝假設你需要通過完成沉默下降流記錄確切60分鐘的文件。

FFMPEG沒有這樣明確的選項。但是你可以模擬它。準備60分鐘的沉默mp3。記錄你的流。錄製完成後,檢查其持續時間。如果時間短於60分鐘 - 請使用靜音文件加入錄音,並指定最終時長應爲60分鐘。 Joining is described here.

編輯:

要繼續錄製時,您只需要檢查你以前的記錄持續時間,如果它太短了 - 再次運行相同的FFMPEG命令,用不同的文件名,然後再加入兩個文件。循環下去,直到你獲得60分鐘的文件

+0

謝謝你的建議。問題是沒有文件是在他們退出時創建的。例如,說20分鐘後,流與FFMPEG退出,FFMPEG似乎只是中止,不創建任何文件 - 所以我沒有什麼可以加入。理想的情況是FFMPEG不會失敗並繼續錄製,直到數據流恢復爲止(一秒到幾秒)。 –

+0

FFMPEG無法做到這一點。我可以推薦你錄製較短的作品,然後加入他們。在這種情況下,如果您保存爲原始音頻,您將丟失較少的 –

+0

,那麼您可能不會「丟失流」,也不會獲取任何數據... – rogerdpack