使用 x11grab 合并两个音频源,可能吗?

使用 x11grab 合并两个音频源,可能吗?

目前我正在使用以下设置运行。

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 像素的位置。

此外,您可以将声卡捕获源设置为混合以获得计算机输出的内容,并且您通常可以取消麦克风静音以获得麦克风监视器环回,但要使其正常工作,您必须使用插孔或脉冲。我不知道为什么杰克没有为你工作,所以我无法帮助你,抱歉。

相关内容