我正在尝试使用 FFmpeg 通过特征和阈值将视频分割成多个单场景子视频scenecut
。我在 SE 上找到了以下命令:
ffmpeg -i myVideo.mp4 -y -c:v libx264 -profile:v high -prese6t:v fast -deinterlace -x264opts min-keyint=15:keyint=1000:scenecut=20 -b:v 2000k -c:a aac -b:a 128k -f segment -segment_format mp4 -segment_format_options movflags=empty_moov+frag_keyframe+default_base_moof+skip_trailer+faststart /home/1/output%%05d.mp4
但是以下命令对我来说不起作用并显示错误:
Unrecognized option 'prese6t:v'.
Error splitting the argument list: Option not found
自上次 FFmpeg 以来有什么变化吗?我正在使用最新版本。
答案1
@K7AAY 走在正确的轨道上。选项标签是preset
。输出文件名掩码应该是output%05d
但除了语法错误之外,还有一些基本问题。碎片化 MP4 选项适用于片段打包在单个容器文件中的情况。片段复用器会发出多个文件,因此可以跳过 MP4 复用器碎片。此外,应指定segment_time,并且使用非常低的值,否则大小小于默认值(2s)的 GOP 将合并到某些片段中。
命令应该是
ffmpeg -y -i myVideo.mp4 -vf yadif \
-c:v libx264 -profile:v high -preset:v fast \
-x264opts min-keyint=15:keyint=1000:scenecut=20 -b:v 2000k \
-c:a aac -b:a 128k \
-f segment -segment_format mp4 -segment_time 0.01 -segment_format_options movflags=faststart \
/home/1/output%05d.mp4
答案2
prese6t:v
替换后preset:v
,因为 ffmpeg 没有“prese6t”选项
output%%05d.mp4
用。。。来代替output5d.mp4
因为 ffmpeg 拒绝output%%05d.mp4
将其视为无效的文件名。