为什么ffmpeg会报告不同的持续时间?

时间:2012-05-17 16:56:20

标签: video ffmpeg

来源视频: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 mbits / Sec
  持续时间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
       Stream#0.1(eng):视频:h264,yuv420p,848x480,2060 kb / s,23.98 fps,23.98 tbr,23976 tbn,47952 tbc

  

比Quicktime报告的时间长一秒。

作为实验,我使用以下设置从Quicktime Pro导出此文件:

  

帧速率:当前
  关键帧:每24帧左右   帧重新排序上
  质量:高
  编码最好的   数据速率:自动
  优化下载
  输出文件:qtime-export-2398.mov

Quicktime Inspector报告:

  

5.62 MB
  H.264
  电影FPS:23.98
  数据速率:3.15 mbits / Sec
  持续时间14:97

现在报道ffmpeg:

  

ffmpeg -i qtime-export-2398.mov

     

似乎流1编解码器帧速率与容器帧速率不同:1200.00(1200/1) - > 23.98(24000/1001)
  输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'qtime-export-2398.mov':
   元数据:
     major_brand:qt
     minor_version:537199360
     compatible_brands:qt
   持续时间:00:00:14.96,开始:0.000000,比特率:3153 kb / s
     流#0.0(eng):音频:pcm_s16le,44100 Hz,2个通道,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信息。我在2个完全不同的安装/版本的ffmpeg上试过这个。结果相同。

  

FFmpeg版本0.6.5,版权所有(c)2000-2010 FFmpeg开发人员     建于2012年1月29日23:55:02,gcc 4.1.2 20080704(Red Hat 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. 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

2 个答案:

答案 0 :(得分:3)

我刚看了第一个文件,这就是他们报告不同持续时间的原因。

Quicktime正在从“电影标题”中收集持续时间值。这里的值是8981/600 = 14.97秒。

FFmpeg从“媒体标题”收集持续时间值,视频为383000/23976 = 15.97秒,音频为719872/48000 = 15.00秒。

编辑:...并回答你的另一个问题:有人可以告诉我如何解决这个问题吗?我想你使用ffmpeg将文件转换为.FLV?如果是这样,我会坚持ffmpeg报道的内容。

答案 1 :(得分:1)

FFmpeg在这里显示“持续时间:00:00:14.96”,请理解您的FFmpeg版本是古老的(并且有许多已知的错误和回归),请参阅http://ffmpeg.org/download.html以获取有关如何获取当前git的信息头,总是被推荐。