Extraction d'un programme unique d'un fichier TS multi-programmes avec ffmpeg

Table des matières- I. Extraction par numéro de programme - 1.1 Obtenir les numéros de programme

  • 1.2 Extraction via le numéro de programme
  • 1.3 Explication des paramètres
  • II. Extraction par identifiant de flux
  • 2.1 Obtenir l'identifiant de flux
  • 2.2 Extraction via le numéro de flux
  • 2.3 Explication des paramètres

I. Extraction par numéro de programme

1.1 Obtenir les numéros de programme

Pour obtenir les informations sur les programmes contenus dans un fichier TS, vous pouvez utiliser la commande ffmpeg suivante :

ffmpeg source.ts


Après exécution, vous verrez une sortie similaire à celle-ci :

......
[mpegts @ 0x7c60800] stream 0 : no PTS found at end of file, duration not set
[mpegts @ 0x7c60800] stream 2 : no PTS found at end of file, duration not set
[mpegts @ 0x7c60800] stream 3 : no PTS found at end of file, duration not set
Input #0, mpegts, from 'source.ts':
  Duration: 00:01:11.11, start: 1494.371989, bitrate: 19965 kb/s
  Program 7 
    Metadata:
      service_name    : ETC7
      service_provider: DVT
  Stream #0:0[0x92]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(top first), 720x576 [SAR 12:11 DAR 15:11], 25 fps, 25 tbr, 90k tbn
  Stream #0:1[0x93](eng): Audio: mp2 (mp3float) ([4][0][0][0] / 0x0004), 48000 Hz, mono, fltp, 128 kb/s (clean effects)
  Program 8 
    Metadata:
      service_name    : ETC8
      service_provider: DVT
  Stream #0:3[0xa2]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(top first), 720x576 [SAR 12:11 DAR 15:11], 25 fps, 50 tbr, 90k tbn
  Stream #0:2[0xa3]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/s


On peut constater que le fichier source.ts contient deux programmes : Program 7 et Program 8.

Il est également possible d'utiliser la commande suivante pour filtrer les programmes présents dans l'entrée :

ffmpeg -i source.ts 2>&1 | grep Program


Cette commande permet d'obtenir directement les numéros de programme disponibles :

  Program 7 
  Program 8 


Prenons l'exemple de l'extraction du programme 7 :

1.2 Extraction via le numéro de programme

ffmpeg -i source.ts -map 0:p:7 -c copy resultat_programme7.ts


Cette commande extrait le programme 7 et l'enregistre dans le fichier resultat_programme7.ts

1.3 Explication des paramètres

  • -i source.ts : Spécifie le fichier d'entrée source.ts.
  • -map 0:p:7 : C'est le paramètre clé pour le mappage de programme. Il indique de sélectionner tous les flux du Programme (p) numéro 7 à partir du premier fichier d'entrée (index 0). FFmpeg inclut automatiquement tous les flux vidéo, audio et autres données associés à ce programme.
  • -c copy : Spécifie que le codage des flux doit être copié, c'est-à-dire que ffmpeg复制 les données originales sans réencdoage.
  • resultat_programme7.ts : Spécifie le nom du fichier de sortie resultat_programme7.ts.

II. Extraction par identifiant de flux

2.1 Obtenir l'identifiant de flux

Utilisez directement la commande ffmpeg suivante :

ffmpeg source.ts


La sortie est identique à celle obtenue précédemment :

Input #0, mpegts, from 'source.ts':
  Duration: 00:01:11.11, start: 1494.371989, bitrate: 19965 kb/s
  Program 7 
    Metadata:
      service_name    : ETC7
      service_provider: DVT
  Stream #0:0[0x92]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(top first), 720x576 [SAR 12:11 DAR 15:11], 25 fps, 25 tbr, 90k tbn
  Stream #0:1[0x93](eng): Audio: mp2 (mp3float) ([4][0][0][0] / 0x0004), 48000 Hz, mono, fltp, 128 kb/s (clean effects)
  Program 8 
    Metadata:
      service_name    : ETC8
      service_provider: DVT
  Stream #0:3[0xa2]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(top first), 720x576 [SAR 12:11 DAR 15:11], 25 fps, 50 tbr, 90k tbn
  Stream #0:2[0xa3]: Audio: mp2 (mp3float) ([3][0][0][0] / 0x0003), 48000 Hz, stereo, fltp, 128 kb/s


Continuons avec l'exemple d'extraction du Program 7. Comme on peut le voir dans la sortie, le Program 7 contient deux flux :

  • Flux vidéo : Stream #0:0[0x92], avec un PID de 0x92 (146)
  • Flux audio : Stream #0:1[0x93], avec un PID de 0x93 (147)

Les identifiants de flux correspondants sont respectivement 0:0 et 0:1.

2.2 Extraction via le numéro de flux

Utilisez la commande ffmpeg suivante pour extraire les flux vidéo et audio du Program 7 selon leur ID de flux :

ffmpeg -i source.ts -map 0:0 -map 0:1 -c copy resultat_programme7.ts


2.3 Explication des paramètres

  • -i source.ts : Spécifie le fichier d'entrée source.ts.
  • -map 0:0 : Mappe le premier flux (index 0) du premier ficheir d'entrée (index 0), soit le flux vidéo du Program 7.
  • -map 0:1 : Mappe le deuxième flux (index 1) du premier fichier d'entrée (index 0), soit le flux audio du Program 7.
  • -c copy : Spécifie que le codage des flux doit être copié, sans réencodage.
  • resultat_programme7.ts : Spécifie le nom du fichier de sortie resultat_programme7.ts.

Étiquettes: FFmpeg mpegts video-transcoding command-line streaming

Publié le 23 octobre à 07h14