我正在尝试编译一个包含多个音轨和字幕轨道以匹配的 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/