FFmpeg 多输入多输出

FFmpeg 多输入多输出

我一直在尝试收集来自不同脉冲源和 x11grab 视频的音频,以便将其中一些合并在一起。最终,所有内容都将推送到AWS IVS

这是将音频推送到不同设备的 html。我的 HTML 代码

ffmpeg -y\
  -hide_banner -loglevel error \
  -nostdin \
  -s ${SCREEN_RESOLUTION} \
  -r ${VIDEO_FRAMERATE} \
  -draw_mouse 0 \
  -f x11grab \
    -i ${DISPLAY} \
    -f pulse -i MySink.monitor \
    -f pulse -i MySink2.monitor \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -x264opts "nal-hrd=cbr:no-scenecut" \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -filter_complex \
    "adelay=delays=1000|1000;[1:a][2:a]amerge=inputs=2[1_2]"\
    -map 0 0.mp4\
    -map 2 2.flv \
    -map 0 -map 1 0_1.mp4 \
    -map 0 -map 2 0_2.mp4 \
    -map 0:v -map "[1_2]":a:0 -f flv ${RTMP_URL1}\
    -map 0:v -map 1:a:0 -f flv ${RTMP_URL2}\

以上代码推送至 IVS 但视频空白,无音频

    -filter_complex \
    "adelay=delays=1000|1000"\
    -f flv ${RTMP_URL1}\

当我删除地图并像上面一样推送到 rtmp 时,视频只能播放音频 0,这是错误的。 我猜问题出在 rtmp 的 map 上。我该如何将它们一起使用?

第二个问题: 如果我再次使用“[1_2]”,它会给我:

带有标签“1_2”的输出不存在于任何定义的过滤器图中,或已在其他地方使用

像下面这样分裂

    -filter_complex \
    "adelay=delays=1000|1000;[1:a][2:a]amerge=inputs=2[1_2];split [main][tmp];"\
    -map 0:v -map "[main]":a:0 -f flv ${RTMP_URL1}\
    -map 0:v -map "[tmp]":a:0 -f flv 0_1_2.flv\

然后这个错误出现了

没有这样的过滤器:''

答案1

我已经修复了这个问题,所以也许有人会需要它。下面的解决方案由于多次编码而性能不佳

ffmpeg -y\
  -hide_banner -loglevel error \
  -nostdin \
  -s ${SCREEN_RESOLUTION} \
  -r ${VIDEO_FRAMERATE} \
  -draw_mouse 0 \
  -f x11grab \
    -i ${DISPLAY} \
  -f pulse -i MySink1.monitor \
  -f pulse -i MySink2.monitor \
  -f pulse -i MySink3.monitor \
  -f pulse -i MySink4.monitor \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 1  ${RTMP_URL1} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 2  ${RTMP_URL2} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 3  ${RTMP_URL3} \
  -c:v libx264 \
    -pix_fmt yuv420p \
    -profile:v main \
    -preset veryfast \
    -minrate ${VIDEO_BITRATE} \
    -maxrate ${VIDEO_BITRATE} \
    -g ${VIDEO_GOP} \
    -map 0 -f flv -map 4  ${RTMP_URL4} \

    ````

相关内容