TS文件里的program编号不是音轨序号,怎样按节目与PID选流

2026-10-24

MPEG-TS的program编号、PID和ffprobe流索引是不同身份。按节目选流应使用program条件,再检查该节目包含哪些音视频PID;不能把节目202当作第二百零二条流,也不能假设PID等于列表索引。

这组文件怎样比较

本题生成一个含节目101与202的真实本地TS,每个节目有一条视频和一条不同频率的合成音。源文件四条流,PID采用明确的两组值,再按节目202导出只含该节目的副本。全过程不接收组播或真实广播信号。

按原始结构逐项检查

  1. 先用show_programs读出节目列表及每个节目关联的stream index和id。TS的id通常以十六进制PID显示,索引则是当前探测结果中的编号;清单保留原始进制并注明含义,避免把0x200误读成十进制二百。

  2. 随后用0:p:202映射目标节目,并在输出显式设置节目号。按program匹配会选择该节目内的流,不只是挑一条视频;若只要其中一种媒体,应进一步限定,而不是导出后以为多出来的音轨来自工具异常。

  3. 读回selected.ts,确认只有节目202且含两条流,再完整解码源与输出。重新封装可能重分配PID,所以输入输出身份映射应单独记录;不能要求输出所有PID永远相同,也不能仅凭节目号保持便证明声音版本正确。

容易误读的地方

反例是用0:202替代0:p:202,前者在这里寻找绝对流索引而不是节目。另一个反例是在网络抓包看到某PID后,直接把它当作ffmpeg列表索引使用。应先在同一文件中同时读取节目、PID和索引,消除层次混淆。

下载与本地读回

generation.json、observed.csv、observed.json、programs.ts、selected.ts。

下载全部附件到同一个独立目录,用 python verify.py 运行本题独立核验脚本。依赖为Python 3.12.4、PATH中的FFmpeg及ffprobe 8.0.1;程序不联网、不连接设备,读取本题文件并在终端输出检查结果。本地实际执行回执保存实际命令、退出码和完整输出。

公开脚本实际确认源节目集合为101和202,导出只有202且流数为二,音视频严格解码无错误。没有测实时TS连续计数、PCR抖动、网络丢包或接收端缓存,不能用本地文件通过去签认直播链路。

命令已在原创短片上实际执行并读回文件。官方文档为滚动版本,本文所列选项已用本地8.0.1确认;未测试目标硬解、网络起播或现场实时性能。

把结果带回交付

交付表为每个节目列名称、编号、输入流索引、PID、媒体类型及输出对应关系。源节目结构变化后重新探测,不沿用旧映射。需要连接实际流时再补采集条件和网络证据,本题文件适合先验证选择命令是否表达了正确的节目身份。

相关背景见展厅视频编码与封装怎么选(H.264 / H.265 / HAP),还可从多媒体播放专题继续查找文件处理方法。需要核对实际工程的接收条件时,可携带本题文件与读回结果进行工程对接咨询。

一级依据

来源核对日期:2026-10-24。引用支持文件机制;原创输入的本地结果不代表客户素材或现场系统已经通过验收。

需要展厅软硬件方案或定制开发?

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。