Is there any way to concat (not merge) specific streams from 2 files without re-encoding?

For example, file #1 has a video stream and 4 audio streams and file #2 has a video stream and 2 audio streams. I want to concat the files together, but include ONLY the following:

  FILE-1: 0:0, 0:1, 0:5
  FILE-2: 0:0, 0:1, 0:2

I know I can do this with the concat filter, but I don't want to re-encode, so that's not an option.

I don't *think* there's a way to do this with the concat protocol, but please let me know if there is.

The concat demuxer seems like the best option, but either I don't know how to properly specify the streams (very likely) or it's just not possible (see below). It looks to me like it tries to merge the streams instead of concat'ing. But then it fails with a seg fault so maybe my input file isn't correct.

$ ffmpeg -f concat -i files.txt -codec copy -f vob TEST.mpg
ffmpeg version N-82261-g2d72ea6 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (GCC) 20150212 (Red Hat 4.9.2-6)
  configuration: --enable-gpl --enable-version3 --enable-nonfree 
--disable-static --enable-shared --disable-debug --enable-libass 
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus 
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 
--enable-libx265 --enable-x11grab --disable-ffplay --disable-ffserver
  libavutil      55. 35.100 / 55. 35.100
  libavcodec     57. 66.101 / 57. 66.101
  libavformat    57. 57.100 / 57. 57.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 66.100 /  6. 66.100
  libswscale      4.  3.100 /  4.  3.100
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, concat, from 'files.txt':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 
[SAR 32:27 DAR 16:9], 29.67 fps, 59.94 tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:2: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:3: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 
[SAR 32:27 DAR 16:9], 29.67 fps, 59.94 tbr, 90k tbn, 90k tbc
    Stream #0:4: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:5: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
[vob @ 0x17db240] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, vob, to 'TEST.mpg':
  Metadata:
    encoder         : Lavf57.57.100
    Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 
[SAR 32:27 DAR 16:9], q=2-31, 29.67 fps, 59.94 tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: ac3, 48000 Hz, 5.1(side), 448 kb/s
Stream mapping:
  Stream #0:3 -> #0:0 (copy)
  Stream #0:4 -> #0:1 (copy)
Press [q] to stop, [?] for help
[vob @ 0x17db240] Timestamps are unset in a packet for stream 0. This is 
deprecated and will stop working in the future. Fix your code to set the 
timestamps properly
Segmentation fault (core dumped)

$ cat files.txt
stream
exact_stream_id 0x1E0
stream
exact_stream_id 0x80
stream
exact_stream_id 0x84
file TEST-1.mpg

stream
exact_stream_id 0x1E0
stream
exact_stream_id 0x80
stream
exact_stream_id 0x81
file TEST-2.mpg

$ ffmpeg -hide_banner -i TEST-1.mpg
Input #0, mpeg, from 'TEST-1.mpg':
  Duration: 00:00:10.11, start: 0.533367, bitrate: 8093 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 
720x480 [SAR 32:27 DAR 16:9], 29.67 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:2[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:3[0x82]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
    Stream #0:4[0x83]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #0:5[0x84]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
At least one output file must be specified

$ ffmpeg -hide_banner -i TEST-2.mpg
Input #0, mpeg, from 'TEST-2.mpg':
  Duration: 00:00:10.11, start: 0.533367, bitrate: 4247 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 
720x480 [SAR 32:27 DAR 16:9], 31 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
    Stream #0:2[0x81]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
At least one output file must be specified
_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to