Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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
like image 652
Passepartout Avatar asked Dec 18 '12 22:12

Passepartout


People also ask

What is a transport stream in FFmpeg?

In a nutshell it tells ffmpeg to receive two data streams – one video, one audio, how to encode each of those streams, and what wrapper to put them in – the Transport Stream. Tells ffmpeg to receive a video feed in DirectShow format from the DirectShow device called “vMix Video”

How do I extract audio from FFmpeg output?

Notice the audio codec ( aac) and the bitrate ( 71 kb/s ). To extract the audio stream: Notice the .aac extension of the output file. FFmpeg normally tries to deduce the desired file format from the output file extension. Then, it transcodes the input into that format. So, if we just did:

How to get SPTS from MPTs in FFmpeg?

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): Show activity on this post. Show activity on this post.

What is FFmpeg and how to use it?

FFmpeg is one of leading frameworks for multimedia processing. Among variety of features, FFmpeg can capture video and audio from your computer's camera and stream them over network to some other remote machine. It becomes more and more common that there is at least one desktop computer or lap top at your home with sole purpose to collect dust.


Video Answer


1 Answers

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
like image 119
learner Avatar answered Sep 20 '22 05:09

learner