ffmpeg - 如何从 .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'
:这可行,但结果有时不是很可读。这是一个屏幕截图:
我在这里还有其他选择吗?或 subtitleedit/ffmpeg 到 f.ex 中的选项。让字幕变大?
(我也将此发布到 SubtitleEdit Github 存储库:https ://github.com/SubtitleEdit/subtitleedit/issues/4539 。)
更新:
我从 SubtitleEdit 的作者那里了解到,如果使用 SubtitleEdit 的图形用户界面,确实可以增加字体大小(请参阅此处。但是,我希望使用命令行工具来做到这一点。
解决方案
不幸的是,它必须像这样使用 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
推荐阅读
- colors - 在 Ada 中打印彩色文本——ANSI 转义码似乎无法正常工作
- sql - 垂直 UTF-8 字符
- docker - Jenkins - Helm - 尝试运行测试时未找到 Docker
- machine-learning - 从经过训练的 xgboost 模型中提取树和权重
- r - 两个表的阈值超出检查
- docker - VPS 上的 OpenVPN 服务器没有互联网
- hash - 使用 ImageMagick 获取图像的模糊哈希
- mysql - 我们可以在 phpMyAdmin 中设置 innodb_autoinc_lock_mode=0 吗?这个数据库是特定的吗?
- python - MacOS 上的 TensorFlow:您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2 FMA
- python - 多个列表的乘积——单个列表 vs 列表数组,需要帮助理解