所以我下载了免费的粉丝制作的星际迷航继续蓝光 ISO第 1-3 集我正在尝试将 FHD 1920x1080 转换为 SD 960x540,以便在手机上观看:
ffmpeg -canvas_size 960x540 \
-i /media/STC_VOL1_BR/BDMV/STREAM/00000.m2ts \
-map_metadata -1 \
-c:v libx264 -map 0:0 -strict -2 -r 24 -s 960x540 \
-c:a libmp3lame -map 0:1 -b:a 384K \
-metadata:s:s:0 language=EN -c:s dvdsub -map 0:2 \
/media/Videos/Star\ Trek\ Continues/S01E01\ Pilgrim\ Of\ Eternity.mkv
但转换后的mkv看了几秒钟后,字幕变成了:
- 由于重叠而无法读取
- 稍微大一点(没问题)
- 移至屏幕右侧和底部
我究竟做错了什么?
注1:我只处理过srt
字幕,而且我知道 dvdsubs 是图像,所以我认为这个canvas_size
参数可能会有帮助,但其实并没有什么区别。
笔记2:是的,这实际上不是一个纯粹的 Ubuntu 操作系统问题,但是视频没有得到任何关注,即使有赏金因此,如果有人进行过视频转换并且遇到了同样的情况,请尝试这里。
答案1
从技术上来说最干净看看这些字幕:
- 提取字幕
- 使用您最喜欢的 OCR 应用程序将它们转换为文本
- 仔细审阅并编辑文本
- 按照您选择的尺寸、颜色、方向和格式将它们刻录回媒体流
这是一项庞大而耗时的工作,我过去曾亲自承担过但可能过度杀伤在这种情况下。
这更好的选项是简单地添加 FFmpeg 选项-fix_sub_duration
(放置在前输入文件),这将修复重复的字幕(如下所示),并使字幕易于阅读:
该选项的详细信息-fix_sub_duration
可以在 FFmpeg-all 手册页中找到,但我冒昧地在此引用了这些详细信息:
-fix_sub_duration
修复字幕时长。对于每个字幕,等待同一流中的下一个数据包并调整第一个数据包的时长以避免重叠。这对于某些字幕编解码器(尤其是 DVB 字幕)是必要的,因为原始数据包中的时长只是粗略估计,结尾实际上是由一个空的字幕帧标记的。在必要时未能使用此选项可能会导致时长过长或由于非单调时间戳导致多路复用失败。
请注意,此选项将延迟所有数据的输出,直到下一个字幕包被解码:它可能会增加内存消耗和延迟。
你会注意到这是第一的高级字幕选项中,第二是-canvas_size
您已经使用过的...