10

I have a file that ends in .ts (e.g., here are the first 10 MB). I would like to convert it to a more main stream format (e.g., mp4, MPEG2-PS...), in a lossless way if possible (i.e., remuxing).

I have read the How do I convert .ts files into something useful? question. I tried avidemux with the settings "copy" for the video and audio streams, and the "PS" container format for MPEG. That failed with the error message "Incompatible audio / For DVD, audio must be 48 kHz MP2 (stereo), AC3, DTS or LPCM (stereo)".

I also tried the suggested CLI command.

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

The output file has the right video, but no sound, at least when played with VLC. This is quite puzzling, because avconv seems to have correctly detected the audio stream.

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

I also tried the CLI command suggested in the comments of another question.

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

Again, no sound in the output file.

EDIT: I tried VLC as suggested by @Daniel. It was almost perfect. It was fast and user friendly. I just had to click on "Convert / Save", add the input file, select the MP4 profile, configure Video codec and Audio codec to "Keep original video / audio track", choose a destination file, and click on "Start". The video looked perfect, but the audio was somehow slightly corrupted, but it might be caused by something quite exotic in the audio stream of my video.

  • Have you tried VLC? videolan.org/vlc/index.html – Daniel Jan 3 '16 at 18:23
  • You mentioned you wanted to remux, not re-encode if possible. Are you sure VLC is only remuxing? – llogan Jan 3 '16 at 18:48
  • @LordNeckbeard Good point! How can I be sure? – lacton Jan 3 '16 at 18:49
  • I'm not familiar with VLC for converting, but I added an answer using ffmpeg. – llogan Jan 3 '16 at 19:11
  • VLC will convert anything to anything with outstanding losslessness. Basically you're limited by the format you chose. – Daniel Jan 4 '16 at 0:53
16

Matroska (MKV)

This will stream copy (re-mux) all streams:

ffmpeg -i input -map 0 -c copy output.mkv

The -map 0 option is used to include all streams. Otherwise it will use the default stream selection behavior which would only result in one stream per stream type being selected. Since Matroska can handle most arbitrary streams I included -map 0.

MP4

This will re-encode the video to H.264 and stream copy the audio:

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

The next example will re-encode both video and audio:

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

Lossless H.264 example:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

Lossless files will be huge.

See FFmpeg Wiki: H.264 for more info.

  • If you wish to encode a lossless MP4 file, add either -qp 0 or -crf 0, as mentioned on the FFMpeg wiki page: trac.ffmpeg.org/wiki/Encode/H.264 – SuperSluether Jan 4 '16 at 1:04
  • 1
    @SuperSluether Lossless makes huge files. By "lossless" I believe lacton meant "remuxing". – llogan Jan 4 '16 at 1:54
  • The sample file I provided is indeed truncated. The actual file I want to remux is too big for easy sharing. – lacton Jan 4 '16 at 22:32
  • Yes, by lossless, I wanted to indicate my preference for remuxing rather than reencoding. Adding this to the original question. – lacton Jan 4 '16 at 22:33
  • 1
    @lacton Try muxing into matroska: ffmpeg -i 10MB.ts -c copy output.mkv. You will get error: Error parsing AAC extradata, unable to determine samplerate. That is why my MKV example re-encoded the audio. Also see #4472: AAC copy from stream without encoding fails and lavf/mkv: Fix AAC remuxing. However, none of this may apply to your large, untruncated input file and it may work as expected. – llogan Jan 4 '16 at 23:01
3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html) will easily convert just about anything into anything.

Give it a shot. It runs on Linux, Windows, and Mac OS X, and has a very user-friendly interface.

  • Now that I've used VLC for video conversion, I would recommend it. Thank you for this suggestion. For my .ts file, it almost worked. The video looked perfect, but the audio was somehow slightly corrupted. It might be caused by something quite exotic in the audio stream of my video. I edited the original question to include this. – lacton Jan 5 '16 at 7:35
  • Yeah, it might work better if you use a different subcontainer for the audio inside the mp4. Perhaps RAW. – Daniel Jan 5 '16 at 15:38

protected by Community Nov 6 '18 at 2:42

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.