VLC: зацикливание файла MPEG-TS с несколькими PID видео

Я моделирую несколько прямых трансляций DASH и HLS, используя статические файлы TS (MPEG Transport Stream), которые зациклены, упакованы и обслуживаются следующим образом:

cvlc --loop myfile.ts  -->  Shaka packager  -->  NGINX webserver

Файл TS был создан с использованием ffmpeg для преобразования входного содержимого 1080p (myfile.mov) в 1 аудиопоток и 3 видеопотока: 720p, 480p и 360p. Полученный файл был проверен на правильность построения.

cvlc используется для зацикливания TS, поскольку он правильно обрабатывает обновление PCR и PTS для каждого цикла, благодаря чему видео «выглядит» вживую.

Вот моя команда cvlc:

cvlc myfile.ts --sout udp:127.0.0.1:9876 --repeat --loop --sout-all --sout-keep

Моя проблема заключается в том, что cvlc случайно перенумеровывает и упорядочивает PID видео, поэтому упаковщик не может установить правильное разрешение в нужном месте для адаптивной потоковой передачи.

Как мне зациклить MPEG-TS и заставить cvlc оставить PID в покое (или, по крайней мере, сохранить их в порядке номеров) и обновлять только PCR/PTS/DTS во время каждого цикла?


person BobC    schedule 01.12.2018    source источник


Ответы (1)


Ключевым моментом является использование оба --sout-ts-es-id-pid и --ts-es-id-pid, чтобы гарантировать, что PID не будут изменены VLC ни на входе, ни на выходе.

Финальная команда:

cvlc myfile.ts --sout udp:127.0.0.1:9876 --sout-ts-es-id-pid --ts-es-id-pid --repeat --loop --sout-all  --sout-keep
person BobC    schedule 03.12.2018