如何解决如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?
如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?
我正在做的是:
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()
)
但我不知道如何在加入前将 mainvid 剪切到特定长度,例如 10 分钟,我知道 ss 会有所帮助,但不知道如何仅将其用于 mainvid。
解决方法
您可以使用 trim
和 atrim
过滤器来修剪视频和音频。
建议的解决方案基于以下answer。
- FFmpeg 支持 3 types 的串联:“Concat demuxer”、“Concat protocol”和“Concat filter”。
方法ffmpeg.concat
适用于 Concat filter。
由于使用了“Concat 过滤器”,一个实用的解决方案是通过“链接”trim
和atrim
过滤器来修剪视频和音频。 -
setpts
和asetpts
过滤器是修复时间戳所必需的。
将 v2 = mainvid.video
和 a2 = mainvid.audio
替换为:
v2 = mainvid.video.filter('trim',start=0,end=600).filter('setpts','PTS-STARTPTS')
a2 = mainvid.audio.filter('atrim',end=600).filter('asetpts','PTS-STARTPTS')
,
我设法做到了:
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()
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。