Is it possible to use the concat demuxer with an input format?

For example:

  $ ffmpeg -f s16le -ac 2 -f concat -i concat-raw.txt ...
or
  $ ffmpeg -f concat -f s16le -ac 2 -i concat-raw.txt ...

I've tried both and it doesn't work, so I assume it's either not supported or I'm doing something wrong.

To back up a little, I'm trying to concat parts of several PCM files. Since they're PCM files, I need to supply the format as an input arg. And because I only want parts from each file, I want to use the concat demuxer along with the inpoint, outpoint options. For example, given the following:

  $ ffmpeg -f s16le -ac 2 -i file1.raw
  ffmpeg version N-86775-gd0ba0be Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 4.9.2 (GCC) 20150212 (Red Hat 4.9.2-6)
    configuration: --enable-gpl --enable-version3 --enable-nonfree 
--enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame 
--enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx 
--enable-libx264 --enable-libx265
    libavutil      55. 67.100 / 55. 67.100
    libavcodec     57.100.104 / 57.100.104
    libavformat    57. 75.100 / 57. 75.100
    libavdevice    57.  7.100 / 57.  7.100
    libavfilter     6. 95.100 /  6. 95.100
    libswscale      4.  7.101 /  4.  7.101
    libswresample   2.  8.100 /  2.  8.100
    libpostproc    54.  6.100 / 54.  6.100
  [s16le @ 0x3d9a420] Estimating duration from bitrate, this may be inaccurate
  Guessed Channel Layout for Input Stream #0.0 : stereo
  Input #0, s16le, from 'file1.raw':
    Duration: 00:05:00.00, bitrate: 1411 kb/s
      Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
  At least one output file must be specified

  $ ffmpeg -hide_banner -f s16le -ac 2 -i file2.raw
  [s16le @ 0x22ed440] Estimating duration from bitrate, this may be inaccurate
  Guessed Channel Layout for Input Stream #0.0 : stereo
  Input #0, s16le, from 'file2.raw':
    Duration: 00:03:00.00, bitrate: 1411 kb/s
      Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
  At least one output file must be specified

  $ cat concat-raw.txt
  file file1.raw
  inpoint 30
  outpoint 270
  duration 300

  file file2.raw
  inpoint 10
  outpoint 160
  duration 180

And trying the 2 commands listed at the top:

  $ ffmpeg -hide_banner -f s16le -ac 2 -f concat -i concat-raw.txt -codec mp3 
test-1.mp3
  [adp @ 0x226d7a0] Format adp detected only with low score of 25, misdetection 
possible!
  concat-raw.txt: Operation not permitted

  $ ffmpeg -hide_banner -f concat -f s16le -ac 2 -i concat-raw.txt -codec mp3 
test-2.mp3
  [s16le @ 0x3ba2540] Estimating duration from bitrate, this may be inaccurate
  Guessed Channel Layout for Input Stream #0.0 : stereo
  Input #0, s16le, from 'concat-raw.txt':
    Duration: 00:00:00.00, bitrate: 1423 kb/s
      Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
  Stream mapping:
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame))
  Press [q] to stop, [?] for help
  [pcm_s16le @ 0x3bac280] Multiple frames in a packet.
  [pcm_s16le @ 0x3bac280] Invalid PCM packet, data has size 1 but at least a 
size of 4 was expected
  Error while decoding stream #0:0: Invalid data found when processing input
  Output #0, mp3, to 'test-2.mp3':
    Metadata:
      TSSE            : Lavf57.75.100
      Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p
      Metadata:
        encoder         : Lavc57.100.104 libmp3lame
  [libmp3lame @ 0x3bb0200] Trying to remove 1152 samples, but the queue is empty
  size=       1kB time=00:00:00.02 bitrate= 320.1kbits/s speed=6.76x
  video:0kB audio:1kB subtitle:0kB other streams:0kB global headers:0kB muxing 
overhead: 30.299400%

And... just to prove both files work fine on their own:

  $ ffmpeg -hide_banner -f s16le -ac 2 -i file1.raw -codec mp3 file1.mp3
  [s16le @ 0x3df9580] Estimating duration from bitrate, this may be inaccurate
  Guessed Channel Layout for Input Stream #0.0 : stereo
  Input #0, s16le, from 'file1.raw':
    Duration: 00:05:00.00, bitrate: 1411 kb/s
      Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
  Stream mapping:
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame))
  Press [q] to stop, [?] for help
  Output #0, mp3, to 'file1.mp3':
    Metadata:
      TSSE            : Lavf57.75.100
      Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p
      Metadata:
        encoder         : Lavc57.100.104 libmp3lame
  size=    4688kB time=00:05:00.01 bitrate= 128.0kbits/s speed=59.6x
  video:0kB audio:4688kB subtitle:0kB other streams:0kB global headers:0kB 
muxing overhead: 0.005270%

  $ ffmpeg -hide_banner -f s16le -ac 2 -i file2.raw -codec mp3 file2.mp3
  [s16le @ 0x2912580] Estimating duration from bitrate, this may be inaccurate
  Guessed Channel Layout for Input Stream #0.0 : stereo
  Input #0, s16le, from 'file2.raw':
    Duration: 00:03:00.00, bitrate: 1411 kb/s
      Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
  Stream mapping:
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame))
  Press [q] to stop, [?] for help
  Output #0, mp3, to 'file2.mp3':
    Metadata:
      TSSE            : Lavf57.75.100
      Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p
      Metadata:
        encoder         : Lavc57.100.104 libmp3lame
  size=    2813kB time=00:03:00.01 bitrate= 128.0kbits/s speed=57.9x
  video:0kB audio:2813kB subtitle:0kB other streams:0kB global headers:0kB 
muxing overhead: 0.008783%

So, is it just not possible to use an INPUT format option (-f s16le) AND the concat demuxer?

If so, do I have to convert each file to mp3 first and then use concat or is there another way to do what I'm want without creating intermediate files?
_______________________________________________
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