ffmpeg 对 tx3g 的支持

ffmpeg 对 tx3g 的支持

我正在尝试使用 ffmpeg 在 MP4 容器中嵌入字幕。

我正在使用以下命令:

ffmpeg -i input.MOV -i input.srt -map 0 -map 1 -c copy -c:s mov_text output.MOV

我希望将字幕编码为 tx3g 而不是文本,以便与我的视频流媒体(Wowza)兼容。

有什么办法更改字幕编码器

谢谢!

答案1

我必须承认,我不知道 FourCC 的tx3g真正含义。FFmpeg 编解码器mov_texttx3g是同一个东西:MPEG-4 第 17 部分(定时文本)。

FFmpeg 唯一不支持的是其嵌入文本的自定义样式。如果你查看源代码,你会发现它们应用默认样式

目前,我们将使用固定的默认样式。当我们添加样式支持时,这将从 ASS 样式生成。

话虽如此,免费和跨平台的MP4盒应该能够按照您的要求将这些字幕添加到 MP4 文件中。即使带有样式。如何将它们添加到文件中取决于它们的编码方式。从其文档中

文本流没有官方的文本表示。此外,规范依赖于 IsoMedia 知识来进行大多数结构描述。为了帮助编写文本流,GPAC 开发了一种 XML 格式,称为 TTXT(用于计时文本)——使用的扩展名为.ttxt

要创建 TTXT 文件,您可以执行以下操作:

找到 SRT 或 SUB 字幕文件,然后运行MP4Box -ttxt file.srt。这将转换 TTXT 格式的字幕。

然后 MP4Box 应该能够将字幕流添加到现有的 MP4 文件中,如下所示:

MP4Box -add input.mp4 -add subtitles.ttxt output.mp4

务必先将字幕文件转换为 TTXT。如果它们仍为 SUB 或 SRT 编码,MP4Box 将使用默认选项对其进行布局:

当导入 SRT 或 SUB 文件时,MP4Box 会选择默认布局选项,使字幕出现在视频的底部。

答案2

在 MP4 视频上嵌入 macOS 和 iOS 兼容字幕的纯 ffmpeg 方法是:

ffmpeg -i input.MOV -i input.srt -c copy -c:s mov_text -tag:s:s:0 tx3g output.mov

-tag:s:s:0 tx3g招很管用。

相关内容