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

VLC: Looping an MPEG-TS file with multiple video PIDs

我正在使用循环、打包和服务的静态 TS(MPEG 传输流)文件模拟一堆 DASH 和 HLS 直播流:

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

TS 文件是使用 ffmpeg 将输入的 1080p 内容 (myfile.mov) 转换为 1 个音频流和 3 个视频流:720p、480p 和 360p 创建的。检查生成的文件以确保其构造正确。

cvlc 用于循环播放 TS,因为它可以正确处理每个循环的 PCR 和 PTS 更新,使视频 "look" 直播。

这是我的 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?

关键是要同时使用--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