我建立了一个小的管道来自动剪切和增强我录制的视频文件。
我通过使用ffmpeg的select='gt(scene,0.4)',showinfo
过滤器来检测场景。解析这些信息后,我为每个场景运行ffmpeg
,以为其生成单个视频文件,例如:
ffmpeg -y -i test.avi -ss 00:00:00.00 -to 00:00:54.61 -c copy test_1.avi
ffmpeg -y -i test.avi -ss 00:00:54.61 -to 00:01:38.21 -c copy test_2.avi
ffmpeg -y -i test.avi -ss 00:01:38.21 -to 00:01:59.45 -c copy test_3.avi
[...]
如您所见,我使用-ss
和-to
参数指定输出文件的开始和结束位置。 效果很好,但是随着时间的流逝,它变得非常非常慢,因为我的原始文件大小约为50 GB。
我想-ss
可以使ffmpeg从原始文件的开头到开始时间进行查找,因为我可以在查找时观察到磁盘操作。
将-ss
参数放置在-i
输入文件之前更快。但是非常不准确(偏移了几秒钟)。
是否有任何技巧可以提高剪切/修剪性能而又不损失准确性?
我还尝试将输入文件转换为MP4,这会减小文件大小并明显缩短查找时间。但是后来我出现了关键帧错误,我想对原始文件进行操作。
谢谢!