运用ffmpeg在Windows下指定显示屏录屏推流

最近一个师姐做AR项目,老师想要实现录屏直播,就让我做一下。
我就写下这个博客记录整合一下。

实现方式是nginx+ffmpeg+rtmp直播推流。

网上有很多单独介绍搭建nginx服务器或介绍ffmpeg推流方法的,我把这些整合一下,感谢文中参考的博客链接。

首先是在Windows上搭建nginx流媒体服务器

1、下载 nginx 1.7.11.3 Gryphon
    [下载链接](http://nginx-win.ecsds.eu/download/nginx%201.7.11.3%20Gryphon.zip)
2、下载完成后解压,在conf文件夹下找到nginx-win.conf

在这里插入图片描述
在这里插入图片描述

以文本形式打开nginx-win.conf文件,添加rtmp的内容如下:
在这里插入图片描述
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
allow play all;
}
}
}

3、启动nginx

进入Windows的cmd终端,cd 进入解压的文件夹nginx-1.7.11.3-Gryphon
输入 nginx.exe -c conf\nginx-win.conf 命令
在这里插入图片描述
此时打开网页,输入“localhost”,如显示Welcome to nginx! 那么说明配置成功啦!
在这里插入图片描述
nginx搭建参考链接

接下来就要使用ffmpeg进行录屏推流

1、下载ffmpeg
  [下载地址](http://ffmpeg.org/download.html#build-windows)

进入网站后,点击Windows图标,再点击Download Build开始下载,将下载的文件解压至指定目录。

2、配置环境变量

右键“我的电脑”,点击“属性”,点击“高级系统设置”,点击“环境变量”,将解压后ffmpeg文件夹下的bin文件添加至Path。
打开cmd命令提示符窗口。输入命令“ffmpeg –version”。如果命令提示窗口返回FFmpeg的版本信息,那么就说明安装成功了,你可以在命令提示行中任意文件夹下运行FFmpeg。
在这里插入图片描述
ffmpeg安装参考链接

3、运用ffmpeg录屏推流

Windows下ffmpeg采集设备的主要方式是dshow、vfwcap、gdigrab.

其中dshow可以用来抓取摄像头、采集卡、麦克风等,vfwcap主要用来采集摄像头类设备,gdigrab则是抓取Windows窗口程序。

我用的是gdigrab实现对桌面的录制,也是最简单的。
gdigrab通过设定不同的输入URL,支持两种方式的屏幕抓取:
(1)“desktop”:抓取整张桌面。或者抓取桌面中的一个特定的区域。
(2)“title={窗口名称}”:抓取屏幕中特定的一个窗口。

-i 设定输入流
-f 设定输出格式

在终端输入
ffmpeg -f gdigrab -i desktop -f flv rtmp://本机IP地址:1935/live
即可开始录制并推流(注意需要先启动nginx服务

出现下图则成功!
在这里插入图片描述
录屏推流参考链接

ffmpeg常用基本命令参考链接

最后是播放

我是下载了VLC播放器进行播放,PC、安卓和苹果都可以安装。

      [下载链接](https://www.videolan.org/vlc/)

打开VLC播放器,点击菜单里的“媒体”,点击“打开网络串流”,输入自己推流的IP地址,点击播放,就可以接收视频啦!
在这里插入图片描述

这是我在自己电脑上播放自己桌面的录制视频
在这里插入图片描述
手机上也是在串流里输入IP地址即可观看,可多个设备同时观看。

--------------------------------------更新---------------------------------------------

老师想要双显示屏展示AR,但只推流第二个显示屏的内容,安排。。。

首先,将第二台显示器HDMI接口或VGA接口插入

在显示设置里 多显示器设置 下,选择“扩展这些显示器”,此时鼠标可以从当前屏幕移动到第二台显示器上。
在这里插入图片描述
接着,选择主屏幕,根据所选主屏幕来确定分辨率。

我将第二台显示器设置为主显示器,根据第二台显示器的分辨率来设置录制桌面的分辨率,我连接的显示器分辨率为2560x1440,
在这里插入图片描述
那么在原来命令行
ffmpeg -f gdigrab -i desktop -f flv rtmp://本机IP地址:1935/live
基础上,在 -i dessktop 之前添加命令 -s 2560x1440

-s 表示分辨率
在这里插入图片描述

此时,屏幕录制便是在(0,0)(2560,1440)录制,即录制第二显示器。
(如果不添加该命令,则会同时录制两个显示屏,播放的视频是两个桌面同时出现在播放器上)
录屏分辨率参考

至此,大功告成!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值