2012-05-17 28 views
5

來源視頻:http://www.artworknotavailable.com/tmp/ffmpegtest爲什麼ffmpeg報告持續時間不同?

QuickTime專業版7.7.1督察(Win 7的)報告的文件以下2398.mov

4.19MB
H.264
電影FPS:23.98
數據傳輸率:2.35兆位/秒
時間14:97

FFMPEG報告以下(查看完整的ffmpeg版本信息在後的底部)

的ffmpeg -i 2398.mov

似乎流1編解碼幀速率不同於容器幀速率:47952.00(1分之47952) - >> 23.98(125分之2997)
輸入#0,MOV,MP4,M4A,3GP,3G2,MJ2,從 '2398.mov':
元數據:
major_brand:QT

次要_version:537199360個
compatible_brands:QT
時間:00:00:15.97,啓動:0.-963005,比特率:2210 kb/s的
流#0.0(ENG):音頻:AAC,48000赫茲,立體聲,S16 ,152 kb/s的
流#0.1(ENG):視頻:H264,YUV420P,848x480,2060千比特/秒,23.98幀,23.98 TBR,23976 TBN,47952 TBC

一個第二長而不是Quicktime報告的內容。

作爲一個實驗我導出此文件從QuickTime專業版使用以下設置:

幀率:當前值
關鍵幀:每24幀
幀重排在
品質:高
編碼最佳
數據速率:自動
優化下載
輸出文件:qtime-export-2398.mov

QuickTime的檢查報告:

5.62 MB
H.264
電影FPS:23.98
數據速率:3。15兆位/秒
持續時間14:97

的ffmpeg現在報告:

的ffmpeg -i qtime-export-2398.mov

似乎流1編解碼幀速率從容器的不同之幀速率:1200.00(1200/1) - > 23.98(24000/1001)
來自'qtime-export-2398.mov'的輸入#0,mov,mp4,m4a,3gp,3g2,mj2:
元數據:
major_brand:QT
minor_version:537199360個
compatible_brands:QT
時間:00:00:14.96,啓動:0.000000,比特率:3153 kb/s的
流#0.0(ENG):音頻:pcm_s16le,44100赫茲, 2個通道,S16,1411 kb/s的
流#0.1(ENG):視頻:H264,YUV420P,678x384,1738千比特/秒,23.98幀,23.98 TBR,600 TBN,1200 TBC

FFmpeg的報告的持續時間從15.97到14.96(我可以住在.1)

這個持續時間是從比特率計算出來的嗎?

我需要準確報告上傳的視頻的持續時間並將其轉換爲FLV。有人可以告訴我這裏發生了什麼,以及我如何解決這個問題?

ffmpeg info below。我已經在2個完全不同的ffmpeg安裝/版本上試過了。同樣的結果。

的FFmpeg版本0.6.5,版權所有(C)2000-2010 FFmpeg的開發 建於2012年1月29日23時55分02秒用gcc 4.1.2 20080704(紅帽4.1.2-51) 配置:--prefix =/usr --libdir =/usr/lib64 --shlibdir =/usr/lib64 --mandir =/usr/share/man --incdir =/usr/include --disable -avisynth --extra- cflags =' - O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector -param = ssp-buffer-size = 4 -m64 -mtune = generic -fPIC'--enable-avfilter - -enable-avfilter-lavf --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau - -enable-version3 --enable-x11grab libavutil 50.15。 1/50.15。 1 libavcodec 52.72。 2/52.72。 2 libavformat 52.64。 2/52.64。 2 libavdevice 52. 2.0/52. 2. libavfilter 1.19。 0/1.19。 0 libswscale 0.11。 0/0.11。 0 libpostproc 51. 2.0/51. 2.0 FFmpeg 0.6.5 libavutil 50.15。 1/50.15。 1 libavcodec 52.72。 2/52.72。 2 libavformat 52.64。 2/52.64。 2 libavdevice 52. 2.0/52. 2. libavfilter 1.19。 0/1.19。 0 libswscale 0.11。 0/0.11。 0 libpostproc 51 2.0/51 2.0

+0

剛剛在Quicktime導出中進行了一些更改。看起來,如果選擇任何幀率或比特率來導出,ffmpeg仍然有更好的報告持續時間的機會。是Quicktime「修復」的東西?容器? – kenitech

回答

3

我只是來看看第一個文件,這是爲什麼他們的報告不同的持續時間。

Quicktime正在收集「電影頭」中的持續時間值。這裏的值是8981/600 = 14.97秒。

FFmpeg正在從「媒體標題」收集視頻的383000/23976 = 15.97秒和音頻的719872/48000 = 15.00s的持續時間值。

編輯:...也回答你的其他問題:有人可以告訴我,我可以解決這個問題嗎?我想你正在使用ffmpeg將文件轉換爲.FLV?如果是這樣,我會堅持ffmpeg的報道。

+0

感謝您的信息。檢查QT文件的電影頭文件的最佳方法是什麼? – kenitech

+0

我還發現,如果我使用'-ss'參數並應用ffmpeg報告的負開始時間,則我的文件更接近我認爲是正確的持續時間,再加上任何已出現不同步的音頻解決。例如: ffmpeg的報告視頻input.mov 開始:0-963005 持續時間:00:00:15.97 的ffmpeg -i input.mov -ar 22050 65536 -ab -s 320x240的-b 524288 -r 12 - ss 00:00:00.963005 output.flv 結果: 持續時間:00:00:15.00 對不起,stackoverflow評論框讓我瘋狂。 – kenitech

+0

不知道最好的方法是什麼。我使用我從頭開始構建的自定義專有庫。關於同步問題,你也可以看看-async參數,看看是否有幫助。我認爲ffmpeg的報告持續時間可能對此文件是正確的。如果您將文件放在不基於QuickTime組件的時間線上,例如Adobe Premiere Pro,則報告的持續時間爲15秒和23幀。 – BlueVoodoo

1

FFmpeg在這裏顯示「持續時間:00:00:14.96」,請理解您的FFmpeg版本是古老的(並且有許多已知的錯誤和回退),請參閱http://ffmpeg.org/download.html以獲取有關如何獲取當前git頭的信息,總是被推薦。

+0

我認爲你試過第二個文件而不是第一個? – BlueVoodoo

+0

感謝信息cehoyos。不幸的是,像很多人一樣,升級並不像人們所期望的那樣簡單。我們目前使用的版本甚至沒有版本號。我用來在這裏測試的例子來自我通過site5.com的個人共享主機帳戶。 – kenitech

相關問題