我正在使用这个脚本:http://www.thegameengine.org/miscellaneous/streaming-twitch-tv-ubuntu/流式传输到 Twitch。它可以工作,但我不想流式传输我的麦克风,只想传输计算机音频。我应该如何更改脚本来实现这一点?
答案1
选择计算机音频
脉冲音频
这可以通过 PulseAudio 和 来实现pavucontrol
。从如何在 Linux 上正确进行屏幕录制:
安装
pavucontrol
。使用 开始录制ffmpeg
。开始pavucontrol
。转到“录制”选项卡,您会ffmpeg
在那里找到列出的内容。将音频捕获从“内部音频模拟立体声”更改为“内部音频模拟立体声监视器”。现在它应该录制系统和应用程序音频,而不是麦克风。此设置将被记住。下次您想使用 进行捕捉时
ffmpeg
,它将自动开始录制系统音频。如果您想恢复此设置,请pavucontrol
再次使用 改回麦克风输入。
阿尔萨斯大学
另外,如果您的音频系统支持通常标记为以下的环回设备,则 ALSA 可以捕获系统音频:立体声混音,挥手混合,单声道混合, 或者你听到的。检查一下alsamixer
你是否有这些,但是如今,硬件环回已不再那么常见。然后参考FFmpeg Wiki:使用 ALSA 捕获音频如果您的系统支持此功能,则获取正确的语法。
否则,我相信您可以使用 ALSA 进行软件环回,但我可能不正确并且没有这方面的经验。
糟糕的剧本
ffmpeg
那个糟糕的、重复出现的脚本中的命令存在一些问题:
-preset
应该用来代替-vpre
-qscale
被 libx264 忽略(使用-crf
或-b:v
)- 图片组未设置(使用
-g
) - 应使用 VBV(使用
-maxrate
和-bufsize
) - 输出可能不使用兼容的色度子采样方案(使用
-pix_fmt yuv420p
) - x11grab 输入应该使用
-framerate
,而不是-r
-threads 6
似乎是一个任意数字,而且并不是每个人都使用相同的硬件。您应该使用默认值(通过删除-threads
,但它很“贪婪”),或者设置一个适当的值,该值允许您以令人满意的速率进行编码,同时仍允许足够的电量来执行您正在录制的其他内容。
该命令应该是这样的:
ffmpeg \
-f alsa -ac 2 -i "$INAUD" \
-f x11grab -video_size "$INRES" -framerate "$FPS" -i :0.0 \
-vcodec libx264 -s "$OUTRES" -preset "$QUAL" -maxrate 1000k -bufsize 2000k -g 50 -pix_fmt yuv420p \
-acodec libmp3lame -ar 44100 -b:a 128k \
-f flv "$STREAM_URL"
笔记:不要盲目地使用我的示例值-maxrate
,,和。您必须根据自己的需要调整这些值,如中-bufsize
所述-g
-b:a
使用 FFmpeg 对流媒体网站进行编码.另请参阅FFmpeg H.264 视频编码指南。