我在转码某些视频时遇到问题。我运行了最简单的 ffmpeg 命令,它需要很长时间,输出文件大约大 10 倍。如果我提供帧速率参数 -r 它运行良好(小文件,快速转码)。有什么问题,我该如何解决?我不想设置固定的帧速率,因为我想最好让它与源相同,不是吗?。
也许问题是别的,因为我在 web 中发现了许多未使用 -r 选项的示例。在没有 -r 选项的情况下,转码为不同的格式或使用不同的源也可以很好地工作(我尝试在 mac os(由 mac 端口提供)上使用 ffmpeg 0.7.13 和 1.2.1,在 debian linux 服务器上使用 0.7.15)。这些视频由我网站的用户提供,并自动转换为适合网络。所以我需要最通用的自动转换命令。
在以下 ffmpeg 输出中,您会发现这两条可疑消息:
ffmpeg 命令和输出(不带 -r 选项):
ffmpeg -i '/tmp/standort_aquarium.mp4' -vcodec libx264 output.mp4 ffmpeg 版本 0.7.15,版权所有 (c) 2000-2013 FFmpeg 开发人员于 2013 年 2 月 22 日 07:18:58 使用 gcc 4.4.5 配置构建:--enable-libdc1394 --prefix=/usr --extra-cflags= '-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid - -enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --禁用剥离 --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable -libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis libavutil 50. 43. 0 / 50. 43. 0 libavcodec 52.123。0 / 52.123。0 libav格式 52.111。0 / 52.111。0 libavdevice 52. 5. 0 / 52. 5. 0 libavfilter 1. 80. 0 / 1. 80. 0 libswscale 0. 14. 1 / 0. 14. 1 libpostproc 51. 2. 0 / 51. 2. 0 输入 #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/standort_aquarium.mp4': 元数据: 主要品牌:mp42 次要版本:0 兼容品牌:mp423gp4isom 创作时间:2013-04-19 15:04:05 持续时间:00:00:18.24,开始:0.000000,比特率:2095 kb/s 流 #0.0(und):视频:mpeg4、yuv420p、640x480 [PAR 1:1 DAR 4:3]、2001 kb/s、14.97 fps、30k tbr、30k tbn、30k tbc 元数据: 创作时间:2013-04-19 15:04:05 Stream #0.1(und):音频:aac,48000 Hz,单声道,s16,96 kb/s 元数据: 创作时间:2013-04-19 15:04:05 文件“output.mp4”已经存在。覆盖?[是/否] 是 [mp4 @ 0x20eed80] 对于不能有效支持它的多路复用器,帧速率非常高。 请考虑指定较低的帧率、不同的复用器或 -vsync 2 [缓冲区@ 0x20f8820] w:640 h:480 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param: [libx264 @ 0x20efde0] 检测到默认设置,使用中等配置文件 [libx264 @ 0x20efde0] 使用 SAR=1/1 [libx264 @ 0x20efde0] MB 速率 (36000000) > 级别限制 (983040) [libx264 @ 0x20efde0] 使用 cpu 能力:MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 [libx264 @ 0x20efde0] 配置文件高,级别 5.1 [libx264 @ 0x20efde0] 264 - 核心 118 - H.264/MPEG-4 AVC 编解码器 - Copyleft 2003-2011 - http://www.videolan.org/x264.html - 选项:cabac=1 ref=3 deblock=1 :0:0 分析=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip_q=1 chroma =-2 线程=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 blueay_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint= 250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 输出 #0,mp4,到 'output.mp4': 元数据: 主要品牌:mp42 次要版本:0 兼容品牌:mp423gp4isom 创作时间:2013-04-19 15:04:05 编码器:Lavf52.111.0 流 #0.0(und): 视频: libx264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 30k tbn, 30k tbc 元数据: 创作时间:2013-04-19 15:04:05 Stream #0.1(und):音频:libfaac,48000 Hz,单声道,s16,64 kb/s 元数据: 创作时间:2013-04-19 15:04:05 流映射: 流#0.0 -> #0.0 流 #0.1 -> #0.1 按 [q] 停止,按 [?] 寻求帮助 帧=542630 fps=132 q=33.0 Lsize= 77226kB 时间=00:00:18.08 比特率=34976.2kbits/s dup=542358 drop=0 视频:68604kB 音频:143kB 全局标头:0kB 复用开销 12.333275% 帧 I:2174 平均 QP:18.72 尺寸:25040 [libx264 @ 0x20efde0] 帧 P:136846 平均 QP:25.27 大小:56 [libx264 @ 0x20efde0] 帧 B:403610 平均 QP:32.99 大小:20 [libx264 @ 0x20efde0] 连续 B 帧:0.8% 0.0% 0.1% 99.1% [libx264 @ 0x20efde0] mb I I16..4:5.5% 83.3% 11.1% [libx264 @ 0x20efde0] mb P I16..4:0.0% 0.0% 0.0% P16..4:0.5% 0.0% 0.0% 0.0% 0.0% 跳过:99.4% [libx264 @ 0x20efde0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.0% 0.0% 0.0% direct: 0.0% skip:100.0% L0:21.2% L1:78.8% BI: [libx264 @ 0x20efde0] 8x8 变换帧内:83.1% 帧间:85.2% [libx264 @ 0x20efde0] 编码 y,uvDC,uvAC 内部:91.2% 95.8% 80.7% 内部:0.0% 0.1% 0.0% [libx264 @ 0x20efde0] i16 v,h,dc,p: 13% 40% 12% 35% [libx264 @ 0x20efde0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 34% 15% 4% 4% 5% 6% 7% 8% [libx264 @ 0x20efde0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 38% 6% 4% 6% 6% 8% 6% 6% [libx264 @ 0x20efde0] i8c dc,h,v,p: 39% 32% 19% 10% [libx264 @ 0x20efde0] 加权 P 帧:Y:0.0% UV:0.0% [libx264 @ 0x20efde0] 参考 P L0:91.5% 5.2% 2.8% 0.4% 0.0% [libx264 @ 0x20efde0] 参考 B L0:55.7% 43.5% 0.8% [libx264 @ 0x20efde0] 参考 B L1:97.9% 2.1% [libx264 @ 0x20efde0] kb/s:31071.04
带有 -r 24 选项的 ffmpeg 命令和输出:
ffmpeg -i '/tmp/standort_aquarium.mp4' -r 30000/1001 -vcodec libx264 output.mp4 ffmpeg 版本 0.7.15,版权所有 (c) 2000-2013 FFmpeg 开发人员 建于 2013 年 2 月 22 日 07:18:58,使用 gcc 4.4.5 配置: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl -- enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore -amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libfreetype --enable-libschroedinger - -disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 - -禁用-可见 libavutil 50. 43. 0 / 50. 43. 0 libavcodec 52.123。0 / 52.123。0 libav格式 52.111。0 / 52.111。0 libavdevice 52. 5. 0 / 52. 5. 0 libavfilter 1. 80. 0 / 1. 80. 0 libswscale 0. 14. 1 / 0. 14. 1 libpostproc 51. 2. 0 / 51. 2. 0 输入 #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/standort_aquarium.mp4': 元数据: 主要品牌:mp42 次要版本:0 兼容品牌:mp423gp4isom 创作时间:2013-04-19 15:04:05 持续时间:00:00:18.24,开始:0.000000,比特率:2095 kb/s 流 #0.0(und):视频:mpeg4、yuv420p、640x480 [PAR 1:1 DAR 4:3]、2001 kb/s、14.97 fps、30k tbr、30k tbn、30k tbc 元数据: 创作时间:2013-04-19 15:04:05 Stream #0.1(und):音频:aac,48000 Hz,单声道,s16,96 kb/s 元数据: 创作时间:2013-04-19 15:04:05 文件“output.mp4”已经存在。覆盖?[是/否] 是 [缓冲区@ 0x132e820] w:640 h:480 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param: [libx264 @ 0x1325de0] 检测到默认设置,使用中等配置文件 [libx264 @ 0x1325de0] 使用 SAR=1/1 [libx264 @ 0x1325de0] 使用 cpu 能力:MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 [libx264 @ 0x1325de0] 配置文件高,级别 3.0 [libx264 @ 0x1325de0] 264 - 核心 118 - H.264/MPEG-4 AVC 编解码器 - Copyleft 2003-2011 - http://www.videolan.org/x264.html - 选项:cabac=1 ref=3 deblock=1 :0:0 分析=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip_q=1 chroma =-2 线程=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 blueay_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint= 250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 输出 #0,mp4,到 'output.mp4': 元数据: 主要品牌:mp42 次要版本:0 兼容品牌:mp423gp4isom 创作时间:2013-04-19 15:04:05 编码器:Lavf52.111.0 流 #0.0(und): 视频: libx264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 30k tbn, 29.97 tbc 元数据: 创作时间:2013-04-19 15:04:05 Stream #0.1(und):音频:libfaac,48000 Hz,单声道,s16,64 kb/s 元数据: 创作时间:2013-04-19 15:04:05 流映射: 流#0.0 -> #0.0 流 #0.1 -> #0.1 按 [q] 停止,按 [?] 寻求帮助 帧= 542 fps= 36 q=29.0 Lsize= 2059kB 时间=00:00:18.01 比特率= 936.3kbits/s dup=270 drop=0 视频:1904kB 音频:143kB 全局标头:0kB 复用开销 0.609224% 帧 I:3 平均 QP:22.39 尺寸:14773 [libx264 @ 0x1325de0] 帧 P:514 平均 QP:23.98 大小:3675 [libx264 @ 0x1325de0] 帧 B:25 平均 QP:27.44 大小:643 [libx264 @ 0x1325de0] 连续 B 帧:93.7% 0.0% 1.1% 5.2% [libx264 @ 0x1325de0] mb I I16..4:16.4% 78.3% 5.3% [libx264 @ 0x1325de0] mb P I16..4:1.6% 6.3% 0.3% P16..4:30.8% 8.6% 3.1% 0.0% 0.0% 跳过:49.4% [libx264 @ 0x1325de0] mb B I16..4: 0.4% 0.7% 0.0% B16..8: 13.2% 1.6% 0.2% 直接: 0.3% 跳过:83.6% L0:50.0% L1:47.1% % BI [libx264 @ 0x1325de0] 8x8 变换帧内:77.1% 帧间:83.1% [libx264 @ 0x1325de0] 编码 y、uvDC、uvAC 内部:62.0% 76.4% 24.4% 内部:17.9% 26.3% 2.3% [libx264 @ 0x1325de0] i16 v,h,dc,p: 14% 60% 13% 13% [libx264 @ 0x1325de0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 35% 33% 2% 3% 3% 3% 3% 4% [libx264 @ 0x1325de0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 40% 12% 4% 7% 7% 7% 5% 4% [libx264 @ 0x1325de0] i8c dc,h,v,p: 46% 34% 16% 4% [libx264 @ 0x1325de0] 加权 P 帧:Y:8.0% UV:4.5% [libx264 @ 0x1325de0] 参考 P L0:65.6% 16.7% 8.8% 7.9% 0.9% [libx264 @ 0x1325de0] 参考 B L0:85.9% 13.3% 0.8% [libx264 @ 0x1325de0] 参考 B L1:88.7% 11.3% [libx264 @ 0x1325de0] kb/s:862.28
视频源暂时可用:https : //www.dropbox.com/s/4xg147z77u40g87/standort_aquarium.mp4
问题是 ffmpeg-vsync
根据输出复用器选择默认值。它的 mp4 复用器默认为 vsync 1,但它选择非常高的帧速率,以便它可以在每个输入帧的精确正确时间放置帧。
(输入帧时序不是恒定的。根据 ffmpeg,它的平均速度为 14.97 fps。可能来自手机摄像头?他们的 FPS 是可变的。我认为他们放慢速度是为了为每一帧获得更多的光线,但这可能是另一个原因。 )
因此 ffmpeg 会将帧复制到它选择的 30k fps 之类的。h.264 在存储重复帧方面非常有效,但这很荒谬。
-vsync 2
无论如何,解决方案是在 ffmpeg 命令行上使用。或者输出到 mkv,然后 remux 到 mp4,但有效的原因是 mkv 默认为-vsync 2
. 真的就是这么简单。您无需将输出设为 CFR。YouTube 可以很好地处理任意帧速率,只要它们是<= 60
,大多数其他播放器也是如此。我认为手机没问题,因为它们首先可以制作可变 FPS 视频。您不需要使用-r something
强制帧复制来达到 30fps 或任何其他值。
小智 0
在 ffmpeg 版本 1.1.2 上使用以下命令时,我没有发现您的视频有任何问题:
ffmpeg -i standort_aquarium.mp4 -r 30000/1001 -vcodec libx264 output.mp4
结果文件大小符合预期(大约一半大小),视频播放正确,并且帧速率转换似乎工作得很好(所以不是错误)。
我在您的输出中看到的唯一问题是蒸汽映射丢失(出于未知原因)。在你的输出上:
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Run Code Online (Sandbox Code Playgroud)
应该写的地方:
Stream mapping:
Stream #0:0 -> #0:0 (mpeg4 -> libx264)
Stream #0:1 -> #0:1 (aac -> libfaac)
Run Code Online (Sandbox Code Playgroud)
我假设您的 ffmpeg 二进制文件/版本有问题(此外,版本 1.2.1 从未发布)。尝试重新下载或者用1.1.2版本重新编译
归档时间: |
|
查看次数: |
24484 次 |
最近记录: |