6

ソースビデオ: http://www.artworknotavailable.com/tmp/ffmpegtest

Quicktime Pro 7.7.1 Inspector (Win 7) は、ファイル 2398.mov について次のように報告します。

4.19MB
H.264
ムービー FPS: 23.98
データレート: 2.35 メガビット/秒
再生時間 14:97

ffmpeg は次のように報告します (投稿の下部にある完全な ffmpeg バージョン情報を参照してください)

ffmpeg -i 2398.mov

ストリーム 1 コーデック フレーム レートがコンテナ フレーム レートと異なるようです: 47952.00 (47952/1) -> 23.98 (2997/125)
入力 #0、mov、mp4、m4a、3gp、3g2、mj2、「2398.mov」から:
メタデータ:
major_brand : qt

minor_version : 537199360
compatible_brands: qt
期間: 00:00:15.97、開始: 0.-963005、ビットレート: 2210 kb/s
ストリーム #0.0(eng): オーディオ: aac、48000 Hz、ステレオ、s16、152 kb/s
ストリーム#0.1(eng): ビデオ: h264、yuv420p、848x480、2060 kb/s、23.98 fps、23.98 tbr、23976 tbn、47952 tbc

Quicktime のレポートよりも 1 秒長くなります。

実験として、次の設定を使用して Quicktime Pro からこのファイルをエクスポートしました。

フレーム レート: 現在の
キー フレーム: 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
) mov':
メタデータ:
major_brand: qt
minor_version: 537199360
compatible_brands: qt
Duration: 00:00:14.96, start: 0.000000, bitrate: 3153 kb/s
Stream #0.0(eng): Audio: pcm_s16le, 44100 Hz, 2 channels, s16 、1411 kb/s
ストリーム #0.1(eng): ビデオ: h264、yuv420p、678x384、1738 kb/s、23.98 fps、23.98 tbr、600 tbn、1200 tbc

持続時間に関するffmpegのレポートは15.97から14.96になりました(私は.1で生活できます)

この期間はビットレートから計算されますか?

アップロードされた動画の長さを正確に報告し、それらを FLV に変換する必要があります。ここで何が起こっているのか、どうすればこれを回避できるのか、誰か教えてもらえますか?

以下のffmpeg情報。ffmpeg の 2 つの完全に異なるインストール/バージョンでこれを試しました。同じ結果です。

FFmpeg バージョン 0.6.5、Copyright (c) 2000-2010、gcc 4.1.2 20080704 (Red Hat 4.1.2-51) 構成で 2012 年 1 月 29 日 23:55:02 にビルドされた FFmpeg 開発者: --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.0 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.0 libavfilter 1.19. 0 / 1.19。0 libswscale 0.11。0 / 0.11。0 libpostproc 51.2.0 / 51.2.0 0 / 52. 2. 0 libavfilter 1.19. 0 / 1.19。0 libswscale 0.11。0 / 0.11。0 libpostproc 51.2.0 / 51.2.0 0 / 52. 2. 0 libavfilter 1.19. 0 / 1.19。0 libswscale 0.11。0 / 0.11。0 libpostproc 51.2.0 / 51.2.0

4

2 に答える 2

4

最初のファイルを見たところ、これが異なる期間を報告する理由です。

Quicktimeは、「ムービーヘッダー」から期間の値を収集しています。ここでの値は8981/600=14.97秒です。

FFmpegは、「メディアヘッダー」から継続時間の値を収集しています。これは、ビデオの場合は383000/23976 = 15.97秒、オーディオの場合は719872/48000=15.00秒です。

編集:...そしてあなたの他の質問にも答えるために:誰かが私がこれを回避する方法を教えてもらえますか?ffmpegを使用してファイルを.FLVに変換していると思いますか?もしそうなら、私はffmpegが報告するものに固執するでしょう。

于 2012-05-17T20:56:39.773 に答える
1

FFmpeg はここに "Duration: 00:00:14.96" を表示します。使用している FFmpeg のバージョンが古い (多くの既知のバグやリグレッションがある) ことを理解してください。現在の git head を取得します。これは常に推奨されます。

于 2012-05-18T05:55:59.420 に答える