FFmpeg报错:Command not found - -c:v libx264,裁剪后缩放问题求助
FFmpeg裁剪+缩放滤镜报错问题解决
问题描述
我有一个HTTPS输入源,需要裁剪顶部控制栏和侧边聊天栏。单独使用-vf "crop=1600:980:0:1080"时可正常运行,但添加缩放参数使用-vf \"crop=1600:980:0:180,scale=1920:1080\"(也曾尝试用分号分隔滤镜)时,出现错误:Command not found - -c:v libx264。脚本中的FFmpeg代码片段如下:
ffmpeg \ -hide_banner -loglevel error \ -nostdin \ -s ${CAPTURE_SCREEN_RESOLUTION} \ -r ${VIDEO_FRAMERATE} \ -draw_mouse 0 \ -f x11grab \ -i ${DISPLAY} \ -f pulse \ -ac 2 \ -i default \ -vf \"crop=1600:980:0:1080,scale=1920:1080\" \ -c:v libx264 \ -pix_fmt yuv420p \ -profile:v main \ -preset slow \ -x264opts \"nal-hrd=cbr:no-scenecut\" \ -minrate ${VIDEO_BITRATE} \ -maxrate ${VIDEO_BITRATE} \ -g ${VIDEO_GOP} \ -c:a aac \ -b:a ${AUDIO_BITRATE} \ -ac ${AUDIO_CHANNELS} \ -ar ${AUDIO_SAMPLERATE} \ -f flv ${RTMP_URL}
解决方法
错误根源是-vf参数里的多余转义引号,导致shell提前截断FFmpeg命令,把后续的-c:v libx264识别成了独立的新命令,从而触发报错。
修正步骤:
- 直接去掉
-vf和-x264opts参数中的转义符\,用双引号直接包裹内容即可:-vf "crop=1600:980:0:180,scale=1920:1080" -x264opts "nal-hrd=cbr:no-scenecut" - FFmpeg的滤镜链默认用逗号
,分隔,不需要用分号。只有在滤镜内部需要分号时才会用到,当前场景完全不需要。
修正后的完整脚本片段:
ffmpeg \ -hide_banner -loglevel error \ -nostdin \ -s ${CAPTURE_SCREEN_RESOLUTION} \ -r ${VIDEO_FRAMERATE} \ -draw_mouse 0 \ -f x11grab \ -i ${DISPLAY} \ -f pulse \ -ac 2 \ -i default \ -vf "crop=1600:980:0:180,scale=1920:1080" \ -c:v libx264 \ -pix_fmt yuv420p \ -profile:v main \ -preset slow \ -x264opts "nal-hrd=cbr:no-scenecut" \ -minrate ${VIDEO_BITRATE} \ -maxrate ${VIDEO_BITRATE} \ -g ${VIDEO_GOP} \ -c:a aac \ -b:a ${AUDIO_BITRATE} \ -ac ${AUDIO_CHANNELS} \ -ar ${AUDIO_SAMPLERATE} \ -f flv ${RTMP_URL}
内容的提问来源于stack exchange,提问作者Mash
相关产品推荐
相关产品推荐

