我有一段用手机拍摄的肖像视频(比例为 9:16),想将其转换为风景视频(16:9),侧面带有黑色填充,或者理想情况下带有模糊填充(但不是太重要)。
SE 上有很多关于此问题的问题,其他网站上也有教程,但我无法让其中任何一个工作。它们往往要么根本无法运行,要么给出错误“没有这样的过滤器”,然后列出命令输入,例如
ffmpeg -i MC_orig.mp4 -filter_complex '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' outputfile.mp4
给出错误
[AVFilterGraph @ 000001bc89ea28c0] No such filter: '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' Error initializing complex filters. Invalid argument
我发现的所有教程/SE 问题都建议使用与上面类似的输入,并且基本上都出现相同的错误。
我的完整控制台输出(Windows 10,使用命令提示符或 Cmder),包括我正在使用的 FFmpeg 版本的详细信息,如下所示。
D:\Users\Sam\Videos\FFMPEG\bin>ffmpeg -i MC_orig.mp4 -filter_complex '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' outputfile.mp4 ffmpeg version N-91930-g0caa33c60b Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8.2.1 (GCC) 20180813 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth libavutil 56. 19.101 / 56. 19.101 libavcodec 58. 30.100 / 58. 30.100 libavformat 58. 18.100 / 58. 18.100 libavdevice 58. 4.103 / 58. 4.103 libavfilter 7. 29.100 / 7. 29.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 libpostproc 55. 2.100 / 55. 2.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MC_orig.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2018-09-09T18:07:24.000000Z com.android.version: 7.0 Duration: 00:07:12.03, start: 0.000000, bitrate: 12081 kb/s Stream #0:0(eng): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 11950 kb/s, 24.94 fps, 24.92 tbr, 90k tbn, 300 tbc (default) Metadata: rotate : 90 creation_time : 2018-09-09T18:07:24.000000Z handler_name : VideoHandle Side data: displaymatrix: rotation of -90.00 degrees Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default) Metadata: creation_time : 2018-09-09T18:07:24.000000Z handler_name : SoundHandle [AVFilterGraph @ 000001bc89ea28c0] No such filter: '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' Error initializing complex filters. Invalid argument
答案1
在 Windows 上,参数应该用双引号括起来,因此
-filter_complex "[0:v]scale=ih*16/9:-1...crop=h=iw*9/16"
其中的参数可以用单引号括起来,如下所示
-vf "drawtext=text='Hello World':fontcolor=white"