使用FFMPEG剪切字幕文件的部分

时间:2014-02-04 13:58:54

标签: command-line ffmpeg subtitle

我想编辑带有音频视频字幕流的输入mp4文件,我可以通过以下方式成功剪切视频和音频流: 1-将每个部件转换为新的mp4文件 2-将mp4文件转换为mpg文件

ffmpeg -i out00.mp4 -qscale:v 0 intermediate1.mpg
ffmpeg -i out01.mp4 -qscale:v 0 intermediate2.mpg

3-合并mpg文件

ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg

4-将mpg文件转换回mp4

ffmpeg -i intermediate_all.mpg  -f mp4 output.mp4

我可以将字幕流提取到srt文件,但是我不能剪切字幕文件的部分内容,你知道怎么做吗?

2 个答案:

答案 0 :(得分:3)

好的,经过长时间的搜索旅行后,这里的确如此:

1-从here下载最新的FFMPEG(这对我造成了很多问题)。

2-将字幕添加到输入文件中:

ffmpeg -i "input.mkv" -i subtitles.srt -c copy -c:s srt -metadata:s:s:1 language=eng -map 0 -map 1 -map_metadata 0 output.mkv

3-切割你需要的部分,正常情况下,ffmpeg也会剪切字幕流

ffmpeg -i input.mkv -ss 00:00:00 -t 00:01:35 -c copy -map 0:0 -map 0:1 -map 0:2 -qscale:0:V 0 -y out0.mkv

4-使用concat demux加入剪切文件:

ffmpeg  -f concat -i mylist.txt  -c copy output.mkv

其中mylist.txt包含:

文件out0.mkv

文件out1.mkv

享受:)。

答案 1 :(得分:1)

我认为您必须手动编辑srt(文本需要显示的文本和时间码)并使用以下命令将其重新播放到最终视频:

ffmpeg -i EditedSource.mp4 -i EditedSub.srt -c copy -map 0:a -map 0:v -map 1:s output.mp4

而不是创建这些中间文件,您尝试过:

ffmpeg -i out00.mp4 -i out01.mp4 -filter_complex '[0][1]concat=n=2:v=1:a=1 [v][a]' -map '[v]' -map '[a]'  output.mp4