Audio 使用FFMPEG将16通道音频输入源拆分为4个独立的4通道音频源,用于流媒体

Audio 使用FFMPEG将16通道音频输入源拆分为4个独立的4通道音频源,用于流媒体,audio,ffmpeg,streaming,audio-streaming,rtmp,Audio,Ffmpeg,Streaming,Audio Streaming,Rtmp,我希望有人能帮忙 我目前正在尝试将一个16通道Dante音频源从一台单独的机器分割成4个不同的音频流,然后通过RTMP发送到Wowza进行MPEG-DASH编码,目前我正在尝试将它们分割成文件,稍后我将添加RTMP流 目前我遇到的最大问题是FFMPEG从输入字符串返回这个错误 Filter channelsplit:WR has an unconnected output ffmpeg -f dshow -i audio="Dante Via Receive (Dante Via)" -fil

我希望有人能帮忙

我目前正在尝试将一个16通道Dante音频源从一台单独的机器分割成4个不同的音频流,然后通过RTMP发送到Wowza进行MPEG-DASH编码,目前我正在尝试将它们分割成文件,稍后我将添加RTMP流

目前我遇到的最大问题是FFMPEG从输入字符串返回这个错误

Filter channelsplit:WR has an unconnected output
ffmpeg -f dshow -i audio="Dante Via Receive (Dante Via)" -filter_complex "[0:a]channelsplit=channel_layout=hexadecagonal[FL][FR][FC][BL][BR][BC][SL][SR][TFL][TFC][TFR][TBL][TBC][TBR][WL][WR]" -map "[FL][FR][FC][BL]" 1-4.wav -map "[BR][BC][SL][SR]" 5-8.wav -map "[TFL][TFC][TFR][TBL]" 9-12.wav -map "[TBC][TBR][WL][WR]" 13-16.wav
这是我当前的输入字符串

Filter channelsplit:WR has an unconnected output
ffmpeg -f dshow -i audio="Dante Via Receive (Dante Via)" -filter_complex "[0:a]channelsplit=channel_layout=hexadecagonal[FL][FR][FC][BL][BR][BC][SL][SR][TFL][TFC][TFR][TBL][TBC][TBR][WL][WR]" -map "[FL][FR][FC][BL]" 1-4.wav -map "[BR][BC][SL][SR]" 5-8.wav -map "[TFL][TFC][TFR][TBL]" 9-12.wav -map "[TBC][TBR][WL][WR]" 13-16.wav
这是完整的FFMPEG输出

ffmpeg version git-2019-12-26-b0d0d7e Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20191125
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 37.100 / 56. 37.100
  libavcodec     58. 65.100 / 58. 65.100
  libavformat    58. 35.101 / 58. 35.101
  libavdevice    58.  9.101 / 58.  9.101
  libavfilter     7. 69.101 /  7. 69.101
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, dshow, from 'audio=Dante Via Receive (Dante Via)':
  Duration: N/A, start: 103082.790000, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
File '1-4.wav' already exists. Overwrite? [y/N] y
File '5-8.wav' already exists. Overwrite? [y/N] y
File '9-12.wav' already exists. Overwrite? [y/N] y
File '13-16.wav' already exists. Overwrite? [y/N] y
Filter channelsplit:WR has an unconnected output 
我还遇到了一个问题,FFMPEG猜测通道数是立体声的,这是不正确的,但我在弄清楚如何将输入流定义为16ch的音频时遇到了问题

对此,任何帮助都将不胜感激

干杯

M

  • 尝试添加
    -channels 16
    dshow输入选项
  • 过滤器输出标签不能在
    -map
    中组合,因此请使用过滤器进行所有混合,并为每个
    -map
    提供单个标签
  • 仅将通道作为单个流输出,并且它不会将多个通道混合到单个流中,因此使用
  • 我没有dshow,所以我无法测试这个

感谢您的帮助,我已经切换到mac电脑上尝试实现这一点,因为-dshow无法使用-channels 16选项定义16个通道,我现在使用的是-avfoundation,它可以在启动时识别16个通道,但仍然会给我相同的错误。很明显,我离你越来越近了,你对分割/映射差异的解释应该会对我有所帮助。我现在将进一步测试,并将报告Backanted以总结这一点,感谢llogan的回答。这非常有效,这是我的AAC和RTMP TX'''/ffmpeg-re-f avfoundation-i的最终脚本:2“-filter'channelmap=0 | 1 | 2 | 3:quad'-c:aac-b:a320krtmp://192.168.1.202:1935/live/out.FLV -过滤器'channelmap=4 | 5 | 6 | 7:quad'-c:aac-b:A320Krtmp://192.168.1.202:1935/live/out2.FLV -过滤器'channelmap=8 | 9 | 10 | 11:quad'-c:aac-b:A320Krtmp://192.168.1.202:1935/live/out3.FLV -过滤器'channelmap=12 | 13 | 14 | 15:quad'-c:aac-b:A320Krtmp://192.168.1.202:1935/live/out4.FLV '''