[FFmpeg-user] Mpeg PID vs. program id?

Roger Pack rogerdpack2 at gmail.com
Thu Jan 7 18:30:35 CET 2016

Hello.  I'm trying to understand how MPEG mapping terminology works.

Given this type of input:
$ ffmpeg -i INPUT
Input #0, mpegts, from 'INPUT':
  Duration: N/A, start: 22159.226833, bitrate: N/A
  Program 1346
      service_name    : 7TWO
      service_provider: Seven Network
    Stream #0:3[0x406]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:6[0x421]: Video: mpeg2video (Main) ([2][0][0][0] /
0x0002), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 14950 kb/s,
25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:7[0x422](eng): Audio: mp2 ([3][0][0][0] / 0x0003), 48000
Hz, stereo, s16p, 192 kb/s
    Stream #0:8[0x424](eng): Subtitle: dvb_teletext ([6][0][0][0] /
0x0006), 492x250
    Stream #0:4[0x499]: Unknown: none ([11][0][0][0] / 0x000B)

I know I can "map out" streams by using

ffmpeg -i INPUT -map 0:p:1346 #  both inputs from program 1344

or to select a single stream

ffmpeg -i INPUT -map i:0x40

in this documentation:


It refers to the first example as selecting by "program id"
and the second example as selecting
"by stream id (e.g. PID in MPEG-TS container)."

What is the difference between "program id" and "PID" in this
verbiage? Does PID stand for program id here?
It works, just wondering.
Also as a follow up, is it possible to select by service_name (7TWO in
this instance)?

More information about the ffmpeg-user mailing list