我想要做一个多标题流的马赛克,1)指定哪些音频流要播放和2)叠加波形在每个视频块底部的音频,他们属于。
我成功地用下面的代码创建了有标题的流马赛克。
然而:
和
,
我希望每个瓷砖看起来像这样,但是因为这些是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"发布于 2022-05-01 01:44:16
-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选项和帧大小的s选项。
对于音频,我只是使用了第一个输入,将流说明符从0:a更改为选择另一个输入
https://stackoverflow.com/questions/72072700
复制相似问题