![使用 x11grab 合并两个音频源,可能吗?](https://linux22.com/image/33407/%E4%BD%BF%E7%94%A8%20x11grab%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E9%9F%B3%E9%A2%91%E6%BA%90%EF%BC%8C%E5%8F%AF%E8%83%BD%E5%90%97%EF%BC%9F.png)
目前我正在使用以下设置运行。
ffmpeg \
-i http://pub1.di.fm:80/di_vocaltrance \
-f x11grab -s 1920x1080 -r 25 -i :0.0 \
-c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
-c:a libmp3lame -ab 96k -ar 22050 \
-threads 0 \
-f flv "rtmp://...."
我想要烘烤的东西:
-f alsa -ac 2 -i hw:0 -acodec pcm_s32le -aq 1 -ab 128k\
这可能吗?甚至可以说,甚至可以混合“我听到的”(又名回放)?
我已经尝试过一些类似的事情(但没有完全理解-map)
-i http://pub1.di.fm:80/di_vocaltrance -map 0:1 \
-f x11grab -s 1920x1080 -r 25 -i :0.0 -map 0:0 \
但事情并没有那么顺利。
我现在已经很接近了,这给了我声音通道,但一切听起来就像我在一个小锡罐里一样。
#!/bin/bash
KEY=`cat key.db`
ffmpeg \
-i http://pub1.di.fm:80/di_vocaltrance \
-f alsa -ac 2 -i hw:0 -acodec mp3 -aq 1 -ab 128k \
-f x11grab -s 1920x1080 -r 25 -i :0.0 \
-c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
-c:a mp3 -ab 96k -ar 22050 \
-threads 0 \
-map 0:0 -map 1:0 -map 2:0 \
-f flv "rtmp://live.twitch.tv/app/$KEY"
仅当我将两种声音混合在一起时才会出现。试图让 JACK 也在这里,但没有任何实际结果(我想我会通过混音器板传递所有内容以从混音中卸载 ffmpeg)。
运行:
-f alsa -ac 2 -i jack \
....
然而给出了这个:
[alsa @ 0x1399280] 无法设置样本格式 0x10000 2(无效参数)
插孔:输入/输出错误
答案1
您应该能够使用 amix 过滤器将音频混合在一起。
例子:
ffmpeg \
-i http://pub1.di.fm:80/di_vocaltrance \ # internet radio
-f alsa -i hw:0 \ # microphone
-f x11grab -i :0.0 \ # computer desktop
-f v4l2 -i /dev/video0 \ # webcam or
# -f iec61883 -i auto \ # firewire camcorder
-filter_complex '[0:a:0][1:a:0]amix=inputs=2;[3:v:0]scale=200:-1[webcam],[2:v:0][webcam]overlay=main_w-overlay_w-10:main_h-overlay_h-10' \
<output>
我还添加了一个网络摄像头覆盖层,要删除它,请去掉网络摄像头线、分号和分号后面的定义。
-map
请注意,如果添加任何具有多个流的输入以删除无关的流,则可能必须定义s。
解释:
-filter_complex
- 定义具有多个输入或输出的过滤器
[0:a:0]
- 输入0的音频流编号0。(网络广播)
[1:a:0]
- 输入1的音频流编号0。(麦克风)
amix=inputs=2
- 将两个音频流混合在一起,如果没有定义输入流,它会自动选择两个,所以在这例如,您应该能够省略上述两个定义。
;
- 启动一个新的过滤器链
[3:v:0]
- 输入3的视频流编号0。(网络摄像头)
scale=200:-1
- 将视频缩放至 200x???,-1 保持宽高比,因此 600x480 视频变为 200x160。
[webcam]
- 将缩放后的输出称为“网络摄像头”。
,
- 继续此链中的下一个过滤器。
[2:v:0]
- 输入2的视频流编号0。(桌面)
[webcam]
- 缩放的网络摄像头流。
overlay=main_w-overlay_w-10:main_h-overlay_h-10
- 将第二个输入覆盖在第一个输入上,将第二个输入放置在距离右侧 10 像素和距离底部 10 像素的位置。
此外,您可以将声卡捕获源设置为混合以获得计算机输出的内容,并且您通常可以取消麦克风静音以获得麦克风监视器环回,但要使其正常工作,您必须使用插孔或脉冲。我不知道为什么杰克没有为你工作,所以我无法帮助你,抱歉。