无需OBS/Streamlabs 如何通过代码实现屏幕音视频采集推流到Twitch RTSP服务器
实现方案(基于FFmpeg)
FFmpeg 可直接实现你需要的屏幕/指定窗口采集、音视频编码、推流全流程,无需安装OBS、Streamlabs这类重型GUI工具,既可以直接用命令行快速落地,也可以基于其API做自定义代码开发。
1. 零代码命令行实现
先在对应系统安装FFmpeg二进制包,配置好环境变量可全局调用后即可使用:
Windows平台
- 采集全屏+系统音频推流命令:
ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset veryfast -b:v 6000k -acodec aac -b:a 192k -f flv "rtmp://你的Twitch推流地址/你的推流密钥"
- 采集指定窗口仅需要把
-i desktop替换为-i title="你的窗口标题",窗口标题需要和实际显示完全匹配。
macOS平台
- 采集全屏+系统音频推流命令:
ffmpeg -f avfoundation -framerate 30 -i "1:0" -vcodec libx264 -preset veryfast -b:v 6000k -acodec aac -b:a 192k -f flv "rtmp://你的Twitch推流地址/你的推流密钥"
- 其中
1:0为「视频设备序号:音频设备序号」,可执行ffmpeg -f avfoundation -list_devices true -i ""查询自己设备对应的序号替换即可。
Linux平台
- 采集全屏+系统音频推流命令:
ffmpeg -f x11grab -framerate 30 -i :0.0 -f pulse -i default -vcodec libx264 -preset veryfast -b:v 6000k -acodec aac -b:a 192k -f flv "rtmp://你的Twitch推流地址/你的推流密钥"
- 指定窗口采集可先通过
xwininfo获取窗口的坐标、宽高参数,替换为-i :0.0+偏移X,偏移Y即可。
注意:Twitch官方默认推流协议为RTMP,如果你确实需要走RTSP协议,仅需要把命令末尾的
-f flv修改为-f rtsp,再替换成你的RTSP服务地址即可。
2. 自定义代码实现
如果需要把推流能力集成到自己的业务程序中,可以直接调用FFmpeg的libav系列API开发,也可以用封装好的第三方库快速实现,以下是Python版本的示例代码:
import ffmpeg # 配置视频采集源(此处为Windows平台指定窗口采集) video_input = ffmpeg.input('title="目标窗口标题"', f='gdigrab', framerate=30) # 配置音频采集源 audio_input = ffmpeg.input('audio="virtual-audio-capturer"', f='dshow') # 配置编码、推流参数 stream = ffmpeg.output( video_input, audio_input, 'rtmp://你的Twitch推流地址/你的推流密钥', vcodec='libx264', preset='veryfast', b='6000k', acodec='aac', b_a='192k', f='flv' ) # 启动推流 ffmpeg.run(stream)
不同系统下仅需要替换音视频采集源的参数即可,逻辑和命令行版本完全一致。
内容的提问来源于stack exchange,提问作者boris
相关产品推荐
相关产品推荐

