ffmpeg complex_filter 与 aevalsrc 结果 "Invalid stream specifier"
ffmpeg complex_filter with aevalsrc results in "Invalid stream specifier"
我正在尝试使用 ffmpeg 的 filter_complex
函数来连接不同类型和采样率的音频文件。音频文件还应穿插 500 毫秒的静音。这是我到目前为止得到的:
ffmpeg -y -filter_complex "aevalsrc=0:d=500ms[silence];[0:a][silence][1:a][silence][2:a]concat=n=5:v=0:a=1[out]" -i a.mp3 -i b.mp3 -i c.wav -aq 5 -acodec libmp3lame -map "[out]" out.mp3
运行 此命令导致:
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, mp3, from 'a.mp3':
Duration: 00:00:01.20, start: 0.025057, bitrate: 54 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, fltp, 54 kb/s
Metadata:
encoder : LAME3.99r
Side data:
replaygain: track gain - 7.600000, track peak - unknown, album gain - unknown, album peak - unknown,
[mp3 @ 0x7f7c2b019a00] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from 'b.mp3':
Duration: 00:00:11.64, start: 0.000000, bitrate: 32 kb/s
Stream #1:0: Audio: mp3, 24000 Hz, mono, fltp, 32 kb/s
Guessed Channel Layout for Input Stream #2.0 : mono
Input #2, wav, from 'c.wav':
Duration: 00:00:11.19, bitrate: 384 kb/s
Stream #2:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 24000 Hz, mono, s16, 384 kb/s
[mp3 @ 0x7f7c2b018e00] Invalid stream specifier: silence.
Last message repeated 1 times
Stream specifier 'silence' in filtergraph description aevalsrc=0:d=500ms[silence];[0:a][silence][1:a][silence][2:a]concat=n=5:v=0:a=1[out] matches no streams.
[silence]没有匹配到任何流是什么原因?我在网上看到的所有 aevalsrc
个例子都是这样来引入沉默的。
谢谢!
[编辑]
如果我将 [silence] 分成两部分:[s1] 和 [s2],它似乎可以工作。但这真的有必要吗?
在过滤图中创建的输出只能使用一次。您需要 (a) 拆分它以生成多个副本。
相反,将其作为常规输入提供。
ffmpeg -y -i a.mp3 -i b.mp3 -i c.wav -f lavfi -i "aevalsrc=0:d=500ms" -filter_complex "[0:a][3][1:a][3][2:a]concat=n=5:v=0:a=1[out]" -aq 5 -acodec libmp3lame -map "[out]" out.mp3
对于纯粹的沉默,anullsrc 稍微快一些。
我正在尝试使用 ffmpeg 的 filter_complex
函数来连接不同类型和采样率的音频文件。音频文件还应穿插 500 毫秒的静音。这是我到目前为止得到的:
ffmpeg -y -filter_complex "aevalsrc=0:d=500ms[silence];[0:a][silence][1:a][silence][2:a]concat=n=5:v=0:a=1[out]" -i a.mp3 -i b.mp3 -i c.wav -aq 5 -acodec libmp3lame -map "[out]" out.mp3
运行 此命令导致:
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, mp3, from 'a.mp3':
Duration: 00:00:01.20, start: 0.025057, bitrate: 54 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, fltp, 54 kb/s
Metadata:
encoder : LAME3.99r
Side data:
replaygain: track gain - 7.600000, track peak - unknown, album gain - unknown, album peak - unknown,
[mp3 @ 0x7f7c2b019a00] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from 'b.mp3':
Duration: 00:00:11.64, start: 0.000000, bitrate: 32 kb/s
Stream #1:0: Audio: mp3, 24000 Hz, mono, fltp, 32 kb/s
Guessed Channel Layout for Input Stream #2.0 : mono
Input #2, wav, from 'c.wav':
Duration: 00:00:11.19, bitrate: 384 kb/s
Stream #2:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 24000 Hz, mono, s16, 384 kb/s
[mp3 @ 0x7f7c2b018e00] Invalid stream specifier: silence.
Last message repeated 1 times
Stream specifier 'silence' in filtergraph description aevalsrc=0:d=500ms[silence];[0:a][silence][1:a][silence][2:a]concat=n=5:v=0:a=1[out] matches no streams.
[silence]没有匹配到任何流是什么原因?我在网上看到的所有 aevalsrc
个例子都是这样来引入沉默的。
谢谢!
[编辑]
如果我将 [silence] 分成两部分:[s1] 和 [s2],它似乎可以工作。但这真的有必要吗?
在过滤图中创建的输出只能使用一次。您需要 (a) 拆分它以生成多个副本。
相反,将其作为常规输入提供。
ffmpeg -y -i a.mp3 -i b.mp3 -i c.wav -f lavfi -i "aevalsrc=0:d=500ms" -filter_complex "[0:a][3][1:a][3][2:a]concat=n=5:v=0:a=1[out]" -aq 5 -acodec libmp3lame -map "[out]" out.mp3
对于纯粹的沉默,anullsrc 稍微快一些。