FFmpeg多路输出视频创建,基于gt(scene,x)进行分割

5

我希望能够通过在ffmpeg中选择场景来依据每个镜头的第一帧将一个视频分割成多个部分。

下面的记录显示了场景帧并将它们创建为照片马赛克。这表明对我来说选择部分是可用的,但我想使用它来创建许多单独的视频,每个场景都有自己的视频文件。

ffmpeg -i video.mpg -vf select='gt(scene\,0.2331)','scale=320x240,tile=1x100' -frames:v preview.png

谢谢。我认为我离成功很近,而且我对任何解决方案都持开放态度。

想要额外50分吗?我在这里有一个+50赏金问题:http://superuser.com/questions/692489/automatically-split-large-mov-video-files-into-smaller-files-at-black-frames-s - Ryan
1个回答

2

您应该使用-ss(流开始时间)和-t(从开始时间算起的视频秒数)选项。您能获取每个场景帧的时间吗?那么您就可以开始了。


是的,这就是我正在尝试的,但我对ffmpeg还不够熟悉,无法完全理解它。我觉得我只想将时间变量分配给场景选择发生的时刻,但我还没想出如何做到。 - spitfire109
使用Excel、OpenOffice或类似的软件。取每个起始时间,并找出与下一个场景切换之间的差异,以获取每个剪辑的持续时间。 = a2-a1 然后使用“start”和“duration”值,例如: ffmpeg -ss%start%-i video.mpg -t%duration%output.mpg - Dominic Mason
如果将“-ss”放在视频“-i video.mpg”的前面,可能会导致精度降低,但是ffmpeg文档表示不应该这样做:“请注意,在大多数格式中,无法准确地寻找,因此ffmpeg将在位置之前寻找最接近的寻找点。当转码并启用了“-accurate_seek”(默认情况下),将解码并丢弃寻找点和位置之间的额外段。”因此,将“-ss”放在前面应该可以得到正确的帧。 - Dominic Mason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接