【发布时间】:2021-06-01 23:46:44
【问题描述】:
我正在使用 FFMPeg 流式传输音频,需要使用 FFMpeg 混合两个音频源并动态设置音量。 IE。一旦流开始,我需要能够更新两个卷的比例。
目前,我使用 CLI 版本的 FFMPeg 进行音量混合和流式处理,但音量混合比是静态的。
有没有办法使用 CLI 工具动态设置音量比?也许是带有 FFMpeg 表达式的东西?
还是使用 API 是唯一的选择?如果是这样,谁能指出我动态混合音频的示例?我还没找到。
编辑:这是我目前传递给混合音频的参数。同样,这工作正常,因此不包括日志,因为没有要修复的错误。问题是如何在进程启动后调整amix 混合的比例。如果需要,愿意使用 API。
"-f rawvideo" + // container
" -vcodec rawvideo" + // codec
" -s " + width + "x" + height + // input video size, must be correct
" -pix_fmt rgba" + // pixel format
" -framerate " + frameRate +
" -i pipe:0" + // from stdin in via pipe
" -f dshow" +
" -i audio=\"Stereo Mix (Realtek(R) Audio)\"" + //
" -f dshow" +
" -i audio=\"Microphone Array (Xbox NUI Sensor)\"" + //
" -filter_complex \"amix\"" + // mix the two inputs, can added ratio if needed
" -c:v libx264" + // x264 software encoder
" -g " + frameRate *2 +
" -keyint_min " + frameRate +
" -c:a aac" + // audio format
" -b:v 6M -maxrate 2M -bufsize 1M" + // constrain bitrate per twitch
" -f flv" +
" " + address
);
【问题讨论】:
-
显示你的命令和日志。
-
音量过滤器支持命令。
-
我现有的 cli 调用使用音量可以正常工作,但它没有根据动态比率混合音频。例如,在直播的第 2 分钟,我不会将麦克风的值更改为更大声,这是我想要做的。
-
@gyan 你能告诉我一个使用命令影响 ffmpeg 一旦运行的例子吗?我找到了这个文档,但没有例子:ffmpeg.org/…
-
我也很想为此找到解决方案。我不相信有一种方法可以动态调整输入的相对音量一旦创建了过滤器。鉴于以下
ffmpeg -i speech.mp4 -i backgroundmusic.mp4 -filter_complex "[0:a]volume=0.9[a1];[1:a]volume=0.1[a2];[a1][a2]amix[aout]" -vn -dn -map [aout] -c:a aac mixed.mp4,我如何实时改变音量?我也不相信使用 API 可以做到这一点,因为我认为过滤器在创建后是静态的,但我希望得到更正。我认为这可以用 gstreamer 完成,但我总是更喜欢 ffmpeg!
标签: ffmpeg