FFmpeg - Extracting video and audio from transport stream file (.ts)

57,099

Solution 1

I could get SPTS from MPTS in ffmpeg by extracting required streams and remuxing it. My mpts has 6 streams for three programs (one audio, one video):

ffmpeg -i mpt.ts -map 0:0 -map 0:1 -acodec copy -vcodec copy -f mpts program1.ts

Solution 2

try:

ffmpeg -i input.ts -map 0:0 -map 0:1 -acodec copy -vcodec copy output.ts

Modify map values according to your input.ts programs.

Solution 3

try:

`cat *.ts | ffmpeg  -i pipe: -c:a copy -c:v copy output.mp4`
Share:
57,099
Passepartout
Author by

Passepartout

Updated on November 01, 2020

Comments

  • Passepartout
    Passepartout over 3 years

    I wish to extract the audio and video of a certain program in a transport stream file (.ts) by specifying its PID without losing quality and using the same codec in the resulting file (the output file is a MPEG).

    Is that even possible with FFmpeg? If so, how can I do it?

    So far, I've come to this command:

     ffmpeg -i tsfile.ts -vcodec copy -acodec copy -q:v 1 output.mpg
    

    Edit: Note that the file output.mpg is created. The file contains the video but the audio isn't attached (no sound). Also, I am unable to specify the program PID to extract.

    Edit 2: Here's the output of ffmpeg -i tsfile.ts

    ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
    built on Nov 25 2012 12:21:26 with gcc 4.7.2 (GCC)
        libavutil      52.  9.100 / 52.  9.100
        libavcodec     54. 77.100 / 54. 77.100
        libavformat    54. 37.100 / 54. 37.100
        libavdevice    54.  3.100 / 54.  3.100
        libavfilter     3. 23.102 /  3. 23.102
        libswscale      2.  1.102 /  2.  1.102
        libswresample   0. 17.101 /  0. 17.101
        libpostproc    52.  2.100 / 52.  2.100
    [mpeg2video @ 0201c7a0] mpeg_decode_postinit() failure
    Last message repeated 10 times
    [mpegts @ 0037b800] PES packet size mismatch
    Input #0, mpegts, from 'tsfile.ts':
    Duration: 00:01:30.58, start: 56297.848344, bitrate: 18045 kb/s
    Program 1
        Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p, 1920x1080  [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
        Stream #0:1[0x34]: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), s16, 384      kb/s
    

    Here's a tsinfo.exe on the .ts file:

    Reading from C:\tsfile.ts
    Scanning 10000 TS packets
    
    Packet 1 is PAT
    Program list:
        Program 1 -> PID 0020 (32)
    
    Packet 2 is PMT with PID 0020 (32)
      Program 1, version 1, PCR PID 0031 (49)
         Program info (38 bytes): 0e 03 c0 b9 16 10 06 c0 02 71 c0 04 00 0b 02 42 3f 05 04
                                  47 41 39 34 86 0d e2 65 6e 67 7e 3f ff 65 6e 67 c1 3f ff
     maximum bitrate (3 bytes): c0 b9 16
     smoothing buffer (6 bytes): c0 02 71 c0 04 00
     system clock (2 bytes): 42 3f
     Registration GA94
     Descriptor tag 86 (134) (13 bytes): e2 65 6e 67 7e 3f ff 65 6e 67 c1 3f ff
      Program streams:
    PID 0031 (  49) -> Stream type 02 (  2) H.262/13818-2 video (MPEG-2) or 11172-2 constrained video
    PID 0034 (  52) -> Stream type 81 (129) User private
        ES info (6 bytes): 6a 04 41 43 2d 33
        DVB AC-3 (4 bytes): 41 43 2d 33
    
    Found 14 PAT packets and 7 PMT packets in 10000 TS packets