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
Mbps 持续时间 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

次要版本: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(英文):视频: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 检查员报告:

5.62 MB
H.264
电影 FPS:23.98
数据速率:3.15
Mbps 持续时间 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
Stream #0.1(eng): Video: 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 -管道 -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 库格式 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 库格式 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 版本很古老(并且有许多已知的错误和回归),请参阅http://ffmpeg.org/download.html了解如何获取当前的 git head,总是推荐的。

于 2012-05-18T05:55:59.420 回答