Как я могу преобразовать DVB субтитры в текстовый формат, используя FFMpeg в прямом эфире или как я могу оптимизировать процесс записи DVD? - PullRequest
0 голосов
/ 28 октября 2018

Я работаю над транскодером 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];......"

- это очень трудоемкая задача процессора.(У меня 8 или более dvbsub в одном потоке).

Кто-нибудь знает, как преобразовать каждый dvbsub в текстовый формат (например, webvtt) или есть ли способ оптимизировать процесс?(Я пытался выполнить этот процесс записи с помощью NVIDIA GPU, но я не добился каких-либо улучшений)

Я читал о программах OCR, которые могут выполнить эту задачу, но после нескольких дней исследований я все еще не знаю, как это сделать.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Вход является живым сигналом UDP.Мне нужно сделать преобразование на лету.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

С помощью ccextractor (https://github.com/CCExtractor/ccextractor) вы можете извлечь субтитры dvbsub и dvb_teletext.

Для извлечения dvbsubs вам нужно скомпилировать ccextractor с поддержкой OCR.

Установить зависимости:

$ 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 или в стандартный вывод, обратитесь к справке ccextractor

0 голосов
/ 29 октября 2018

Это ответ на ваш вопрос, однако он не будет принят как таковой, потому что вам не понравится ответ.

Ты не можешь этого сделать. Это, к сожалению, ответ.

Ваши субтитры основаны на графике, растровые изображения, вы должны OCR, а затем заранее проверьте их на наличие ошибок и / или аномалий. Вы не можете сделать это на лету.

В зависимости от того, что вы играете, есть много онлайновых ресурсов, где доступны текстовые эквиваленты субтитров.

Желаю тебе удачи.

...