VLC:使用多个视频PID循环MPEG-TS文件

时间:2018-12-01 02:50:19

标签: loops vlc mpeg transport-stream

我正在使用静态TS(MPEG传输流)文件模拟一堆DASH和HLS实时流,这些文件经过循环,打包和服务如下:

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

使用ffmpeg创建TS文件,将输入的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(或至少按数字顺序保留PID),并且仅在每次循环期间更新PCR / PTS / DTS?

1 个答案:

答案 0 :(得分:0)

关键是同时使用 --sout-ts-es-id-pid--ts-es-id-pid来确保在输入或输出阶段,VLC都不会更改PID。

最终命令:

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