ffmpeg - 添加和删除字幕而不更改视频

Posted

技术标签:

【中文标题】ffmpeg - 添加和删除字幕而不更改视频【英文标题】:ffmpeg - Adding and Removing Subtitles without Changing the Video 【发布时间】:2018-09-27 19:15:51 【问题描述】:

我正在尝试将字幕嵌入到视频中,然后在不更改视频的情况下再次删除字幕,这意味着我希望输出视频与原始视频相同。

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

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】:

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

对于初学者,源生成器可能会写入 ffmpeg 的 muxer 不会写入的元数据键。 ffmpeg 不写的源 moov 中可能有专有框。

最后,ffmpeg 将打印 lav 库版本,但可以通过提供 -fflags +bitexact 跳过这些版本。

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

【讨论】:

以上是关于ffmpeg - 添加和删除字幕而不更改视频的主要内容,如果未能解决你的问题,请参考以下文章

android ffmpeg视频添加字幕和配音

如何使用 mencoder/ffmpeg 命令行工具更改字幕颜色并为其添加背景?

使用 FFmpeg 删除导出视频字幕文件

python之 ffmpeg给mp4视频添加字幕

无法使用 ffmpeg 更改视频字幕编解码器

php使用ffmpeg向视频中添加文字字幕