gpt4 book ai didi

ffmpeg - 优化 ffmpeg 立体声拆分和广播

转载 作者:行者123 更新时间:2023-12-04 23:27:53 25 4
gpt4 key购买 nike

我收到一个带有视频和立体声音频的 rtmp 输入。我需要拆分音频并在不同的地址上发送两个带有左声道和右声道的视频。我有这样一个命令:

ffmpeg  -r 25 -loop 1 -i background.png \
-rtbufsize 2000M -i rtmp://stereoinput \
-filter_complex "[1:v][0:v]overlay[video];[video]split[video][video2];[1:a]channelsplit[aleft][aright]" \
-map [video] -map [aleft] -c:v libx264 -minrate 1000k -maxrate 1500k -b:v 1300k -bufsize 1000k \
-pix_fmt yuv420p -r 25 -g 100 -tune zerolatency -preset ultrafast \
-c:a libmp3lame -ar 44100 -y -f flv rtmp://out_left \
-map [video2] -map [aright] -c:v libx264 -minrate 1000k -maxrate 1500k -b:v 1300k -bufsize 1000k \
-pix_fmt yuv420p -r 25 -g 100 -tune zerolatency -preset ultrafast \
-c:a libmp3lame -ar 44100 -y -f flv rtmp://out_right

但它执行缓慢:它只输出 20 fps。我在具有 4 GB RAM 和 4 核的 azure VPS 上进行编码,从未想过它会出现这样的问题。它完美地编码了一个流。

你有什么想法可以让它更快吗?
例如,我也不喜欢我必须对相同的视频流进行两次编码。我买不起两个命令,因为我必须查看命令的全部输出。

最佳答案

使用 tee伪复用器,它允许您对流进行一次编码并多次重用它。

ffmpeg  -r 25 -loop 1 -i background.png \
-rtbufsize 2000M -i rtmp://stereoinput \
-filter_complex "[1:v][0:v]overlay[video];[1:a]channelsplit[aleft][aright]"
-map [video] -map [aleft] -map [aright]
-c:v libx264 -minrate 1000k -maxrate 1500k -b:v 1300k -bufsize 1000k -pix_fmt yuv420p
-r 25 -g 100 -tune zerolatency -preset ultrafast -c:a libmp3lame -ar 44100 -y
-f tee "[f=flv:select=v,\'a:0\']rtmp://out_left|[f=flv:select=v,\'a:1\']rtmp://out_right"

tee muxer 中的 select 表达式引用映射的输出流,所以 a:1表示第二个映射的音频输出流和 v表示所有映射的视频输出流。

关于ffmpeg - 优化 ffmpeg 立体声拆分和广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36545239/

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