如何在直播中使用 FFMpeg 将 dvb 字幕转换为文本格式,或者如何优化 dvb 刻录过程?
How can i transform dvb subtitles into text format using FFMpeg within a live streaming or how can i optimize the dvb burning process?
我正在开发从任何格式到 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 信号。我需要即时进行转换。
这是您问题的答案,但不会被接受,因为您不喜欢这个答案。
你做不到。不幸的是,这就是答案。
你的字幕是基于图形的,位图,你必须预先进行 OCR,然后检查它们是否有错误 and/or 异常。你不能即时完成。
根据您播放的内容,有许多在线资源提供基于文本的等效字幕。
祝你好运。
使用 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 仅从多路复用中获取 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 帮助
我正在开发从任何格式到 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 信号。我需要即时进行转换。
这是您问题的答案,但不会被接受,因为您不喜欢这个答案。
你做不到。不幸的是,这就是答案。
你的字幕是基于图形的,位图,你必须预先进行 OCR,然后检查它们是否有错误 and/or 异常。你不能即时完成。
根据您播放的内容,有许多在线资源提供基于文本的等效字幕。
祝你好运。
使用 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 仅从多路复用中获取 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 帮助