[英]How to cut a video to a certain length and add an intro video to it using ffmpeg-python?
How to cut a video to a certain length and add an intro video to it using ffmpeg-python?如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?
What i am doing is:我正在做的是:
intro = ffmpeg.input(intro)
mainvid = ffmpeg.input(mainvid)
v1 = intro.video
a1 = intro.audio
v2 = mainvid.video
a2 = mainvid.audio
joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node
v3 = joined[0]
a3 = joined[1]
(
ffmpeg
.output(
v3,
a3,
'out.mkv',
vcodec='libx265', )
.run()
)
But i dont know how to cut mainvid to a certain length like 10 mins before joining, i know ss will help but dont know how to use it for only mainvid.但我不知道如何在加入前将 mainvid 切割成一定长度,例如 10 分钟,我知道 ss 会有所帮助,但不知道如何仅将其用于 mainvid。
You may use trim
and atrim
filters for trimming the video and the audio.您可以使用
trim
和atrim
过滤器来修剪视频和音频。
The suggested solution is based on the following answer .建议的解决方案基于以下答案。
ffmpeg.concat
applies Concat filter .ffmpeg.concat
应用Concat filter 。trim
and atrim
filters.trim
和atrim
过滤器来修剪视频和音频。setpts
and asetpts
filters are required for fixing the timestamps.setpts
和asetpts
过滤器。 Replace v2 = mainvid.video
and a2 = mainvid.audio
with:将
v2 = mainvid.video
和a2 = mainvid.audio
为:
v2 = mainvid.video.filter('trim', start=0, end=600).filter('setpts', 'PTS-STARTPTS')
a2 = mainvid.audio.filter('atrim', start=0, end=600).filter('asetpts', 'PTS-STARTPTS')
I managed to do it using:我设法使用:
intro = ffmpeg.input(intro)
mainvid = ffmpeg.input(mainvid, ss='00:00:00', t='00:10:00')
v1 = intro.video
a1 = intro.audio
v2 = mainvid.video
a2 = mainvid.audio
joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node
v3 = joined[0]
a3 = joined[1]
(
ffmpeg
.output(
v3,
a3,
'out.mkv',
vcodec='libx265', )
.run()
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.