首页 > 解决方案 > 如何从 .srt 字幕和 .ts 视频转到带有 dvb_subtitles 的 .ts 视频?

问题描述

我正在尝试从 .srt 字幕文件 + .ts 视频文件 => 带有 dvb_subtitle 的 .ts 视频文件中获取。

我的.srt:

1
00:00:00,000 --> 00:00:05,000
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel hendrerit massa.

2
00:00:05,000 --> 00:00:10,000
Aliquam dolor sapien, molestie ac sagittis eu, tempus nec est.

3
00:00:10,000 --> 00:00:28,000
Morbi id sem eu sapien consectetur imperdiet. Morbi sed purus et sapien interdum placerat vitae quis orci.

我的 .ts:来自https://filesamples.com/formats/ts的 sample_1920x1080.ts

字幕编辑命令:.\SubtitleEdit.exe /convert 'test_subtitles.srt' Blu-raysup /resolution:1920x1080 /overwrite. 这将按预期创建一个 test_subtitles.sup 文件。

然后我使用ffmpeg包含 .sup 字幕,如下所示.\ffmpeg.exe -y -i 'sample_1920x1080.ts' -fix_sub_duration -i 'test_subtitles.sup' -map 0:v -map 1:s -vcodec copy -acodec copy -scodec dvbsub -copyts -muxdelay 0 -max_delay 0 'output.ts':这可行,但结果有时不是很可读。这是一个屏幕截图:

VLC截图显示字幕难以阅读

我在这里还有其他选择吗?或 subtitleedit/ffmpeg 到 f.ex 中的选项。让字幕变大?

(我也将此发布到 SubtitleEdit Github 存储库:https ://github.com/SubtitleEdit/subtitleedit/issues/4539 。)

更新:

我从 SubtitleEdit 的作者那里了解到,如果使用 SubtitleEdit 的图形用户界面,确实可以增加字体大小(请参阅此处。但是,我希望使用命令行工具来做到这一点。

标签: ffmpeg

解决方案


不幸的是,它必须像这样使用 ffmpeg 完成:

ffmpeg -i ./sample_1280x720.ts -i ./sample.srt -map 0 -map 1 -c copy -c:s dvd_subtitle ./out.ts

但是ffmpeg不会接受这个错误:

字幕编码目前只能从文本到文本或位图到位图

.srt格式是基于文本的,.sup格式是基于图像的。

只要ffmpeg拒绝将字幕编码成视频。

我们可以使用-vf(视频过滤器),硬编码(srt)字幕到视频中:

ffmpeg -i ./sample_1280x720.ts -vf subtitles=sample.srt:force_style='Fontsize=24' ./out.ts

我们可以使用Fontsize选项定义字体大小。

在此处输入图像描述

但如果有sup并且想刻录成视频,你可以使用这个:

ffmpeg -i ./sample_1280x720.ts -i ./sample.sup  -filter_complex "[0:v][1:s]overlay" ./out.ts

推荐阅读