ffmpeg - 多个字幕轨道未编码到 mov 文件中

标签 ffmpeg mov

我正在尝试编译一个包含多个音轨和字幕轨道以匹配的 mov 文件。不幸的是,只有第一个字幕轨道出现在 Quicktime(适用于 Apple 设备)中。看着它编译 - 似乎第二个字幕轨道没有使用 tx3g 格式编码

命令

ffmpeg \
-i input1.mp3 \
-i input2.mp3 \
-loop 1 \
-i black.png \
-i eng.srt -i zh.srt \
-map 0 -map 1 -map 2 -map 3 -map 4 \
-c:a aac \
-c:v libx264 -pix_fmt yuv420p -shortest \
-c:s:0 mov_text \
-tag:s:s:0 tx3g \
-c:s:1 mov_text \
-tag:s:s:1 tx3g \
-metadata:s:s:0 language=eng -metadata:s:s:1 language=chi \
-metadata:s:a:0 language=eng -metadata:s:a:1 language=chi \
output.mov

部分输出
    Stream #0:3(eng): Subtitle: mov_text (tx3g / 0x67337874)
Metadata:
  encoder         : Lavc57.89.100 mov_text
Stream #0:4(chi): Subtitle: mov_text
Metadata:
  encoder         : Lavc57.89.100 mov_text

最佳答案

两个字幕都已编码,但标签语法错误。由于编解码器标签仅适用于流,因此初始 s不应该出现。此外,由于它是同一个编码器,您可以应用全局字幕编码器。

所以,

-c:s:0 mov_text \
-tag:s:s:0 tx3g \
-c:s:1 mov_text \
-tag:s:s:1 tx3g \

变成
-c:s mov_text \
-tag:s:0 tx3g \
-tag:s:1 tx3g \

可以进一步简化为
-c:s mov_text \
-tag:s tx3g \

当然,不确定 QT 是否因此而失败。

关于ffmpeg - 多个字幕轨道未编码到 mov 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51414627/

相关文章:

android - 为 Android 错误构建 FFMPEG

android - 在 Android 上使用 ffmpeg 为捕获的视频添加水印

Qt - 使用 FFmpeg 库的 H.264 视频流

ios - 如何在 ios 中使用运行 ffmpeg 命令

ffmpeg 每帧请求的位太多

ffmpeg:如何创建透明背景的MOV?

c - 将无符号字符转换为有符号数据类型时,为什么在汇编中使用 movzbl?

vb.net - 多线程运行 ffmpeg

linux - 汇编 MOV 不起作用,调试 Linux 和 INT 代码列表

x86-16 - 8086 MOV 指令错误,同时使用常量值和内存位置作为操作数,