gpt4 book ai didi

ffmpeg - 在 ffmpeg 中,当使用带有 trim 和 atrim 的 filter_complex 时如何处理字幕流?

转载 作者:行者123 更新时间:2023-12-04 22:56:43 28 4
gpt4 key购买 nike

我正在使用 ffmpeg filtergraphs 来提取和连接视频 block 。作为一个简单的例子,考虑这个,它接受一个包含视频流和音频流的输入文件,并产生一个 20 秒的输出,其中包括输入的时间戳 00:10-00:20 和 00:30-00:40:

ffmpeg -i in.mkv \
-filter_complex "\
[0:0]trim=start=10:end=20,setpts=PTS-STARTPTS[v1]; \
[0:1]atrim=start=10:end=20,asetpts=PTS-STARTPTS[a1]; \
[0:0]trim=start=30:end=40,setpts=PTS-STARTPTS[v2]; \
[0:1]atrim=start=30:end=40,asetpts=PTS-STARTPTS[a2]; \
[v1][a1][v2][a2]concat=n=2:v=1:a=1[v][a]\
" -map [v] -map [a] \
-c:0 libx264 -preset:0 ultrafast \
-c:1 ac3 -b:1 128k -ac:1 2 out.mkv
有没有办法以类似的方式处理字幕流,以便字幕与其他修剪过的流相匹配?我正在寻找可以从命令行工作的东西,成为非交互式批处理的一部分。
更新 - 解决方案
根据@kesh 的反馈,我们使用了 concat。 demuxer 处理字幕并将其与读取音频和视频流结合成一个复杂的过滤器图。首先,您需要一个 concat 输入文件,例如:
file 'in.mkv'
inpoint 10
outpoint 20

file 'in.mkv'
inpoint 30
outpoint 40
然后,如果字幕是流 5,例如,只需:
ffmpeg -i in.mkv \
-f concat -i concat-file \
-filter_complex "\
[0:0]trim=start=10:end=20,setpts=PTS-STARTPTS[v1]; \
[0:1]atrim=start=10:end=20,asetpts=PTS-STARTPTS[a1]; \
[0:0]trim=start=30:end=40,setpts=PTS-STARTPTS[v2]; \
[0:1]atrim=start=30:end=40,asetpts=PTS-STARTPTS[a2]; \
[v1][a1][v2][a2]concat=n=2:v=1:a=1[v][a]\
" -map [v] -map [a] -map 1:5 \
-c:0 libx264 -preset:0 ultrafast \
-c:1 ac3 -b:1 128k -ac:1 2 \
-c:2 copy out.mkv

最佳答案

你不能。 FFmpeg filtergraph 只能向视频添加字幕文本(例如,subtitleass 过滤器)。它无法操纵字幕流。
您最好的选择是 concat demuxer .您可以以不同的开始和结束时间多次列出同一个文件。在您的批处理文件中,您可以在内存中创建 concat 列表并将其通过管道传输到 FFMpeg。
[编辑]
假设 in.mkv拥有一切:视频、音频和字幕流。然后你可以准备一个 concat demuxer 文件,如:listing.txt

ffconcat version 1.0

file in.mkv
inpoint 10
outpoint 20

file in.mkv
inpoint 30
outpoint 40
基本上,使用不同的开始和结束时间戳多次列出输入文件。
然后,
ffmpeg -f concat -i listing.txt -map [v] -map [a] -map [s] -c copy out.mkv
会将所有 3 个流复制到 out.mkv .
免责声明:我自己没有验证它,但它应该在纸上工作。

关于ffmpeg - 在 ffmpeg 中,当使用带有 trim 和 atrim 的 filter_complex 时如何处理字幕流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71535722/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com