gpt4 book ai didi

ffmpeg - 使用 ffmpeg 从 DVD 或 VOB 文件中硬编码字幕

转载 作者:行者123 更新时间:2023-12-04 23:33:03 27 4
gpt4 key购买 nike

我有一些 DVD,我想对其进行编码,以便我可以在 Chromecast 上播放它们,并带有字幕。 Chromecast 似乎只支持基于文本的字幕格式,而 DVD 字幕是位图格式,所以我需要将字幕硬编码到视频流中。
首先我使用 vobcopy创建一个VOB文件:

vobcopy -I /dev/sr0
接下来我要使用 ffmpeg以 Chromecast 支持的格式将其编码为视频流。这是我迄今为止最接近的(基于 ffmpeg documentation ):
ffmpeg -analyzeduration 100M -probesize 100M -i in.vob \
-filter_complex "[0:v:0][0:s:0]overlay[vid]" -map "[vid]" \
-map 0:3 -codec:v libx264 -crf 20 -codec:a copy out.mkv
-filter_complex "[0:v:0] [0:s:0]overlay[vid]参数应覆盖第一个视频流上的第一个字幕流( -map 0:3 用于音频)。这部分有效,但字幕只显示了几分之一秒(我猜是一帧)。
如何使字幕显示正确的持续时间?
我在 Linux 上使用 ffmpeg 4.4.1,但我也尝试了最新的快照版本,并尝试了 gstreamer 和 vlc(但没有走远)。

最佳答案

我发现唯一能完美运行的解决方案是一个乏味的多阶段过程。
使用 vobcopy 复制 DVD

vobcopy -I /dev/sr0
使用 mencoder提取vobsub格式的字幕.该命令将写入 subs.idx 和 subs.sub。如有必要,可以编辑 idx 文件以调整字幕的外观。
mencoder *.vob -nosound -ovc frameno -o /dev/null \
-vobsuboutindex 0 -sid 0 -vobsubout subs
将 VOB 中的音频和视频复制到 mkv 文件中。 ffprobe可用于识别相关的视频和音频流号。
ffmpeg -fflags genpts -i *vob -map 0:1 -map 0:3 \
-codec:v copy -codec:a copy copied_av.mkv
将字幕与音频/视频流合并。
mkvmerge -o merged.mkv copied_av.mkv subs.sub subs.idx
然后 ffmpeg将可靠地使用 mkv 文件将硬编码的字幕写入视频流。
ffmpeg -i merged.mkv -filter_complex "[0:v:0][0:s:0]overlay[vid]" \
-map [vid] -map 0:1 -codec:v libx264 -codec:a copy hardcoded.mkv

关于ffmpeg - 使用 ffmpeg 从 DVD 或 VOB 文件中硬编码字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72318986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com