Track 2 and Sub-titles lost in FFMpeg conversion

1

I want to convert my video library to MP4 using:

ffmpeg -i inputfile.ts -c copy outputfile.mp4

However, outputfile appears to contain one audio track which is the NAR track from the inputfile.

The input TS files are made by an elderly Humax Foxsat and have two audio tracks - Track 1 = NAR & Track 2 = English, and 3 sub-title tracks. Only Audio Track 1 is present in the MP4 conversion.

The output from ffmpeg is:

Input #0, mpegts, from 'content_20170903_2200.ts':
  Duration: 01:00:39.56, start: 46220.828489, bitrate: 1754 kb/s
  Program 7730
  Program 7731
  Program 7701
  Program 7720
    Stream #0:0[0x911]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 704x576 [SAR 16:11 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x913](NAR): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, fltp, 128 kb/s (visual impaired) (descriptions)
    Stream #0:2[0x912](eng): Audio: mp2 ([4][0][0][0] / 0x0004), 48000 Hz, stereo, fltp, 160 kb/s
    Stream #0:3[0x936](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
    Stream #0:4[0x914](eng,eng): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
    Stream #0:5[0xf04]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:6[0xf03]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:7[0xf02]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:8[0xf01]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:9[0xf00]: Unknown: none ([5][0][0][0] / 0x0005)
    Stream #0:10[0x90e]: Data: scte_35
    Stream #0:11[0x3c8]: Data: scte_35
  Program 7710
  Program 7715
  Program 7717
  Program 7711
  Program 7716
  Program 7750
Output #0, mp4, to 'content.mp4':
  Metadata:
    encoder         : Lavf58.20.100
    Stream #0:0: Video: mpeg2video (Main) (mp4v / 0x7634706D), yuv420p(tv, top first), 704x576 [SAR 16:11 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 90k tbc
    Stream #0:1(NAR): Audio: mp2 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (visual impaired) (descriptions)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mpegts @ 05e23ac0] PES packet size mismatchtime=01:00:32.14 bitrate=1349.9kbits/s speed= 103x
frame=90961 fps=2564 q=-1.0 Lsize=  603289kB time=01:00:39.06 bitrate=1358.1kbits/s speed= 103x
video:543560kB audio:56855kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.478617%

Any help greatfully received.

Sabreur

Posted 2019-12-29T18:10:18.717

Reputation: 11

Answers

0

By default ffmpeg will only map one video, audio and subtitle track to the output. You can see this in the log here:

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)

To map all tracks, use -map 0:

ffmpeg -i inputfile.ts -c copy -map 0 outputfile.mp4

See also here.

Note that in some cases not all types of tracks can be mapped to an output file with stream-copying (-c copy). For example, MP4 does not support certain types of subtitle formats. In that case, you have to convert the format or leave it out during mapping (i.e. only map what can be copied).

slhck

Posted 2019-12-29T18:10:18.717

Reputation: 182 472