2013-08-18 73 views
2

我目前正在用blackmagic的prorecorder錄製視頻。我使用ffmpeg將視頻實時轉碼爲mp4視頻容器。持續時間未知,因爲我正在將代碼轉換器輸出到命名管道。ffmpeg - 生成moov原子

我的目標是我試着用瀏覽器播放這個文件,而流仍然是錄製的 - 播放是偉大的,但問題是,當我打開文件時,持續時間被定義爲當前錄製時間。

所以,問題是 - 我想在fe期間產生「假」moov原子。用ffmpeg8小時,然後開始錄製mp4文件,因爲我已經在做。我怎麼能這樣做?

文檔,我檢查,我認爲這是有關 - https://ffmpeg.org/ffmpeg-formats.html#MOV_002fMP4_002fISMV 我也看到這個堆棧:Is it possible to fake a (mp4) moov atom?

+0

在方案中支離破碎的MP4解決方案會更「標準」或更方便的RTMP流你看的http://trac.ffmpeg .org/wiki/StreamingGuide – alexbuisson

+0

使用ffmpeg進行RTMP流式傳輸是否可以選擇在流式傳輸期間返回,這意味着您可以重播2小時前發生的事件,例如? – mmx

+0

沒有有效的你不能做那樣的事情。我以爲你正在嘗試直播,但它不同。 – alexbuisson

回答

4

我有一個類似的問題,唯一的編碼近2000個視頻就發現了它。而是從頭開始的,我用這個命令插入MOOV原子:

/usr/bin/ffmpeg -i ./input.mp4 -c:v copy -movflags faststart -strict -2 ./output.mp4 
+1

這會將moov原子移動到開始位置,但僅在第二階段移動,因此會顯着延長轉換時間,並首先使目標失效:在轉換完成之前您無法開始播放。 -movflags empty_moov'在文件仍在轉換時使文件可播放,但Duration不確定且不可能搜索。所以問題是:如果具有空moov的文件是可播放的並且我們知道持續時間,爲什麼我們不能只將持續時間數據放在開頭? – Liphtier