【问题标题】:Using FFMPEG to split a 16 channel audio input source into 4 seperate 4 channel audio feeds for streaming使用 FFMPEG 将 16 通道音频输入源拆分为 4 个单独的 4 通道音频源以进行流式传输
【发布时间】:2020-04-19 07:30:58
【问题描述】:

希望有人能帮忙

我目前正在尝试将 16ch Dante 音频输入从单独的机器拆分为 4 个不同的音频流,然后我可以使用这些音频流通过 RTMP TX 到 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

这是完整的 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 猜测声道数是立体声的问题,这是不正确的,但我在弄清楚如何将输入流定义为 16 声道音频时遇到问题

任何帮助都将得到极大的欢迎

干杯

M

【问题讨论】:

    标签: audio ffmpeg streaming audio-streaming rtmp


    【解决方案1】:
    ffmpeg -f dshow -channels 16 -i audio="Dante Via Receive (Dante Via)" -filter_complex "[0:a]channelmap=0|1|2|3[1-4];[0:a]channelmap=4|5|6|7[5-8];[0:a]channelmap=8|9|10|11[9-12];[0:a]channelmap=12|13|14|15[13-16]" -map "[1-4]" 1-4.wav -map "[5-8]" 5-8.wav -map "[9-12]" 9-12.wav -map "[13-16]" 13-16.wav
    
    • 尝试添加-channels 16 dshow 输入选项。
    • 过滤器输出标签不能在-map 中组合,因此请与过滤器混合,并为每个-map 提供一个标签。
    • channelsplit 仅将通道作为单独的流输出,并且不会将多个通道混合为单个流,因此使用 channelmap 代替。
    • 我没有 dshow,所以无法对此进行测试。

    【讨论】:

    • 谢谢,我已经切换到我的 mac 来尝试实现这一点,因为 -dshow 无法使用 -channels 16 选项定义 16 个通道,我现在使用 -avfoundation 来识别从一开始就有 16 个频道,但仍然给我同样的错误。显然我越来越近了,你对拆分/地图差异的解释应该可以帮助我进一步
    • 我现在要进一步测试,并会报告回来
    • 现在想总结一下,感谢 llogan 的完美回答,这是我使用 AAC 和 RTMP TX ''' /ffmpeg -re -f avfoundation -i ":2" - filter 'channelmap=0|1|2|3:quad' -c:a aac -b:a 320k rtmp://192.168.1.202:1935/live/out.FLV -filter 'channelmap=4|5|6| 7:quad' -c:a aac -b:a 320k rtmp://192.168.1.202:1935/live/out2.FLV -filter 'channelmap=8|9|10|11:quad' -c:a aac - b:a 320k rtmp://192.168.1.202:1935/live/out3.FLV -filter 'channelmap=12|13|14|15:quad' -c:a aac -b:a 320k rtmp://192.168。 1.202:1935/live/out4.FLV '''
    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 2016-04-28
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多