text - 如何在直播中使用 FFMpeg 将 dvb 字幕转换为文本格式,或者如何优化 dvb 刻录过程?

标签 text ffmpeg subtitle webvtt dvb

我正在研究从任何格式到 HLS 的 hls 转码器,我需要同时使用“dvbsub”格式对多个字幕进行编码,目的是让解释 m3u8 HLS 播放列表的客户选择。

主要问题是以这种方式将每个 dvbsub 刻录到实时视频流中:

 "-filter_complex "[0:v][0:s:0]overlay[v0];[0:v][0:s:1]overlay[v1];[0:v][0:s:2]overlay[v2];......"

是一项非常占用 CPU 资源的任务。 (我在同一个流中有 8 个或更多 dvbsub)。

有谁知道如何将每个 dvbsub 转换为文本格式(例如 webvtt),或者是否有办法优化流程? (我尝试使用 NVIDIA gpu 执行此刻录过程,但没有取得任何改进)

我读到了可以完成任务的 OCR 程序,但经过几天的研究,我仍然不知道该怎么做。

提前致谢。

编辑:输入是实时 UDP 信号。我需要即时进行转换。

最佳答案

使用 ccextractor (https://github.com/CCExtractor/ccextractor),您可以提取 dvbsub 和 dvb_teletext 字幕。

要提取 dvbsub,您需要编译支持 OCR 的 ccextractor。

安装依赖项:

$ sudo apt-get update
$ sudo apt-get install tesseract-ocr-dev
$ sudo apt-get install tessercat-ocr-*
$ sudo apt-get install -y gcc
$ sudo apt-get install -y libcurl4-gnutls-dev
$ sudo apt-get install -y libleptonica-dev

在 ccextractor 代码中:
$ mkdir build && cd build
$ cmake -DWITH_OCR=ON ../src/ 
$ make -j4

通过 udp 流式传输您的内容(-map 0:18 仅从 Multiplex 获取 dvbsub 内容):
$ ffmpeg -re -i mux562.ts -map 0:18 -c:s dvbsub -f mpegts udp://239.0.0.1:5000

实时阅读您的 udp 流并获取 srt 输出:
$ ccextractor -s -codec dvbsub -in=ts -udp 239.0.0.1:5000 -o output.srt

您可以将 srt 输出写入 FIFO 或 stdout,请参阅 ccextractor 帮助

关于text - 如何在直播中使用 FFMpeg 将 dvb 字幕转换为文本格式,或者如何优化 dvb 刻录过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53034473/

相关文章:

javascript - 在 html5 canvas 中将文本绘制为图像

xaml - 无法获得我想要的文本换行行为

text - Swift 和自动布局 : proportional font size in a label

ffmpeg - 如何更改引用帧值?

ssh - 通过 ssh 到 FFmpeg 的正确路径

html - 在按钮选项中对齐大文本

ffmpeg - 视频结束时如何关闭ffplay?

android - 设置 SupportActionBar 字幕多行

ffmpeg - 我可以在商业上免费使用 ffmpeg 的默认 Arial 字体吗?

video - ffmpeg 将字幕轨道设置为默认值