gpt4 book ai didi

ffmpeg - 如何使用 ffmpeg 在 xstack 马赛克上叠加波形并指定特定音频进行播放

转载 作者:行者123 更新时间:2023-12-04 23:33:10 28 4
gpt4 key购买 nike

我想制作多个标题流的马赛克,1)指定要播放的音频流和 2)在每个视频图 block 的底部覆盖它们所属的音频的波形。
我成功地使用下面的代码创建了标题为流的马赛克。
然而:

  • 我很难弄清楚如何只指定一个特定的音频源。我找到了amix,但我并不想混合它们,我只想指定音频[a0],或[a1],或[a2]等。


  • 我很难弄清楚如何在每个图 block 的视频底部叠加波形。我努力想办法把 showwaves 融入其中。可能吗?

  • 我希望每个图 block 看起来像这样,但由于这些是 rtmp 流,它们需要使用每个流动态播放匹配的波形。 https://dragonquest64.blogspot.com/2020/01/ffmpeg-audio-waveform.html
    如果有人能指出我正确的方向,那就太好了。我快接近了,但我对这一切都很陌生,而且已经花了比我应该花的时间更多的时间,所以希望能得到一点帮助。
    ffmpeg \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-1 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-2 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-3 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-4 \
    -filter_complex " \
    [0:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-1:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a0]; \
    [1:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-2:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a1]; \
    [2:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-3:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a2]; \
    [3:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-4:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a3]; \
    [a0][a1][a2][a3]xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0[out]; \
    amix=inputs=1
    " \
    -map "[out]" \
    -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 -profile:v baseline -preset veryfast -f mpegts "udp://127.0.0.1:1234?pkt_size=1316"

    最佳答案

  • 只指定一个特定的音频流:只需使用另一个 -map选项来指定音频流,就像您使用视频流一样。
  • showwaves混音:每个音频输入都需要一个单独的过滤器链。

  • 下面是该命令的粗略草图:
    ffmpeg \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-1 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-2 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-3 \
    -i rtmp://my.cdn.com/srcEncoders/STREAM-4 \
    -filter_complex " \
    [0:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-1:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a0]; \
    [0:a] showwaves=r=fps:s=wxh[a0w];
    [1:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-2:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a1]; \
    [1:a] showwaves=r=fps:s=wxh[a1w];\
    [2:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-3:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a2]; \
    [2:a] showwaves=r=fps:s=wxh[a2w];\
    [3:v] setpts=PTS-STARTPTS, scale=qvga \
    , drawtext=text=STREAM-4:fontsize=20:x=10:y=10:fontcolor=white:box=1:boxcolor=black@0.5:boxborderw=5 [a3]; \
    [3:a]showwaves=r=fps:s=wxh[a3w];\
    [a0][a0w][a1][a1w][a2][a2w][a3][a3w][a3w]\
    xstack=inputs=8:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|0_h0+h1+h2+h3|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0_h0+h1+h2+h3[out]" \
    -map [out] -map 0:a \
    -c:v libx264 -b:v 1000k -g 30 -keyint_min 120 -profile:v baseline -preset veryfast -f mpegts "udp://127.0.0.1:1234?pkt_size=1316"
    设置帧率 r和框架大小 s showwaves 的选项根据您的喜好过滤。
    对于音频,我只使用了第一个输入,将流说明符从 0:a 更改为选择另一个输入

    关于ffmpeg - 如何使用 ffmpeg 在 xstack 马赛克上叠加波形并指定特定音频进行播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72072700/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com