ffmpeg-在不更改视频的情况下添加和删除字幕

时间:2018-09-27 19:15:51

标签: ffmpeg subtitle

我试图将字幕嵌入视频中,然后再次删除字幕而不更改视频,这意味着我希望输出的视频与原始视频相同。

我正在使用以下命令嵌入字幕

ffmpeg -i original.mp4 -i original.srt \
-c:v copy -c:a copy -c:s mov_text \
-map_metadata 0:g -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a \
-movflags +faststart -threads 8 \
output.mp4

要删除字幕,

ffmpeg -i output.mp4 \
-c:v copy -c:a copy \
-map_metadata 0:g -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a \
-movflags +faststart -threads 8 \
-sn \
removed.mp4

输出几乎相同,但我不知道是什么引起差异。比较二进制文件时,几乎所有差异都是

original: 0xF3
removed: 0xF4

我认为字节仅增加1。

可以帮忙吗?预先谢谢你。

1 个答案:

答案 0 :(得分:3)

通常,您不能期望ffmpeg remux操作的结果与源相同,尤其是在源是由其他应用生成的情况下。

对于初学者,源生成器可以编写ffmpeg的混合器不写入的元数据密钥。源Moov中可能有ffmpeg不会写的专有框。

最后,ffmpeg将标记lav库版本,但可以通过提供-fflags +bitexact来跳过。

请注意,通过使用copy,将复制流数据包,从而保留媒体流的完整性。