使用FFmpeg将视频分割成多个场景

使用FFmpeg将视频分割成多个场景

我正在尝试使用 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将其视为无效的文件名。

相关内容