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".