在尝试执行的操作中,我需要删除视频文件的某些部分,然后从中创建一个新文件。
例如,从这样的视频文件中:
===================
Run Code Online (Sandbox Code Playgroud)
我切了两次
======||=====||||==
Run Code Online (Sandbox Code Playgroud)
并生成一个新的较小的视频文件:
=============
Run Code Online (Sandbox Code Playgroud)
当我说2时,我指的是任意数量的单独剪切,具体取决于视频文件。
如果我只想切割一部分,我会做:
ffmpeg -i video.mp4 -ss 00:00:03.500 -to 00:00:08.500 -async 1 cut.mp4 -y
Run Code Online (Sandbox Code Playgroud)
哪个完美。我也许可以这样做很多次,然后将所有片段合并在一起……但是对于较大的视频文件,这是非常低效的。
要进行两次切割,我正在查看filter_complex。我一直在努力使其正确运行几个小时,但似乎无法正常工作:/
如果我做这样的事情,我会得到没有音频的视频:
command = 'ffmpeg -i video.mp4 \
-filter_complex "\
[0]trim=start_frame=10:end_frame=20[v0];\
[0]trim=start_frame=30:end_frame=40[v1];\
[v0][v1]concat=n=2[v5]"\
-map [v5] -async 1 output.mp4'
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,事情就会一团糟:
ffmpeg -y -i video.mp4 \
-filter_complex "\
[0:v]trim=start_frame=10:end_frame=20[v0];\
[0:a]atrim=start=10:end=20[a0];\
[0:v]trim=start_frame=30:end_frame=40[v1];\
[0:a]atrim=start=30:end=40[a1];\
[v0][a0][v1][a1]concat=2:v=1:a=1[v5][a]"\
-map [v5] -map [a] -async 1 output.mp4
Run Code Online (Sandbox Code Playgroud)
我什至尝试使用ffmpeg-python https://github.com/kkroening/ffmpeg-python在Python中做到这一点,但我也无法获得音频。
谁能在这方面给我一些帮助?非常感谢你!!