Потоковые субтитры/текст с использованием ffmpeg и ffserver

Может ли FFmpeg (и ffserver) передавать текстовые данные? Сценарий использования заключается в том, что видео и текстовые данные будут передаваться отдельно через ffserver. Затем клиенты могут просматривать только видеопоток или комбинировать видеопоток и текстовые данные (как наложение) с помощью ffmpeg.

Я пытался читать документацию и сам экспериментировал. Мне удалось продемонстрировать заказчику, что наложения можно добавлять с помощью фильтров «drawtext». Однако он был отклонен. Они хотят, чтобы текстовые данные передавались отдельно и при необходимости мультиплексировались в клиенте.

Кто-нибудь делал что-то подобное?


person the.red.comet    schedule 28.12.2016    source источник
comment
Можете показать, как вы это сделали? Я не могу транслировать видео + текст. Получить только видео, а текст не показывать.   -  person Ferguson    schedule 20.02.2017
comment
Я пробовал это весь день. Я не думаю, что формат ffserver FFM принимает что-либо, кроме 1 видео и 1 аудиопотока. Я не видел ничего, что говорило бы о возможности предоставить ffserver канал, содержащий текст (в моем случае телетекст DVB). Это возможно, если ffserver поставляется с файлом на стороне сервера, содержащим телетекст, и передается с использованием RTSP или чего-то, что не слишком сильно манипулирует потоком?   -  person QA Collective    schedule 13.04.2017


Ответы (1)


ffserver вскоре будет удален из пакета ffmpeg.

Может быть трудно найти что-то «из коробки», которое передает только текст, потому что это очень просто сделать со многими языками программирования в наши дни.

Тем не менее, я понимаю ваше требование: вы хотите передавать текст и видео и разрешать выбор текста, который будет использоваться на стороне клиента.

Это был мой вариант использования, и после трех долгих тяжелых дней я нашел способ сделать это с помощью VLC. .

VLC имеет графический интерфейс для настройки потокового сервера, но, конечно, его также можно использовать в командной строке. Наконец-то я нашел команду, которая сработала для меня:

cvlc -v /host/home/user/file.ts --sout-all --no-ts-split-es --sout "#duplicate{dst=udp{dst=MachineName:1234}}"

Я делюсь этим в надежде, что я сэкономлю другим время, которое потребовалось мне, чтобы найти всю важную опцию «--no-ts-split-es»!

person QA Collective    schedule 17.04.2017