ffmpeg实时录屏 并推流

本文详细介绍了如何在Windows环境下安装和配置Nginx服务器,特别是添加RTMP模块以支持流媒体服务。通过下载包含RTMP组件的nginx版本,创建必要目录,配置nginx.conf文件,设置rtmp和http服务,然后启动nginx。同时,文章还提供了使用ffmpeg进行本地视频推流和使用vlc进行拉流播放的测试步骤,以验证服务器配置的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:

windows

后面出linux的

一、nginx的安装和配置


    首先我们下载nginx。在nginx官网上下载的nginx是不带rtmp模块的,所以我们在http://nginx-win.ecsds.eu/download/中下载nginx 1.7.11.3 Gryphon.zip,如下图所示。该版本的nginx包含rtmp组件,通过rtmp组件,才能提供流媒体服务,使nginx成为rtmp流媒体服务器。

下载后我们解压nginx 1.7.11.3 Gryphon.zip,得到nginx 1.7.11.3 Gryphon文件夹。使用命令提示符进入解压后的路径下,输入命令

nginx.exe -v

 上述命令的作用是查看nginx版本,输入上述命令后出现下图所示信息表示nginx安装成功

我们在nginx 1.7.11.3 Gryphon目录下新建三个目录:m3u8File、rec、vod,如下图所示:

然后我们进入nginx 1.7.11.3 Gryphon文件夹的conf目录下,新建一个文件“nginx.conf”,如下图所示:

打开nginx.conf,输入如下信息后,保存。

 
worker_processes  1;   #Nginx进程数,建议设置为等于CPU总核数
 
events {
    worker_connections  1024;  #工作模式与连接数上限
}
 
rtmp_auto_push on;
 
 
#RTMP服务
rtmp{
    server{
	    listen 1935;        #服务端口
		chunk_size 4096;    #数据传输块的大小
		
		application vod{
		    play ./vod;   #视频文件存放位置
		}
		application live{
		    live on;                     #开启直播
			hls on;                      #开启hls直播。这个参数把直播服务器改造成实时回放服务器
			#wait_key on;                #对视频切片进行保护,这样就不会产生马赛克了
			hls_path ./m3u8File;         #切片视频文件存放位置(HLS,m3u8文件存放位置)
			hls_fragment 2s;             #每个视频切片的时长
			hls_playlist_length 16s;
			recorder myRecord{
			    record all manual;
				record_suffix _.flv;
				record_path ./rec;
			}
			#hls_continuous on;          #连续模式
			#hls_cleanup on;             #对多余的切片进行删除
			#hls_nested on;              #嵌套模式
		}
	}
}
 
 
#HTTP服务
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        location /live_hls{
		    types{
			    #m3u8 type设置
				application/vnd.apple.mpegurl m3u8;
				#ts分片文件设置
				video/mp2t ts;
			}
			#指向访问m3u8文件目录
			alias ./m3u8File;
			    add_header Cache-Control no-cache; #禁止缓存
		}
 
        location /control{
		    rtmp_control all;
		}
		
		location /stat{
		    rtmp_stat all;
			rtmp_stat_stylesheet stat.xsl;
		}
		location /stat.xsl{
		    root ./nginx-rtmp-module-master;
		}
 
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

当通过上面的步骤验证了nginx配置文件的正确性后,我们就可以启动nginx了。通过命令提示符在nginx.exe所在的目录下输入命令:

start nginx

上述命令的作用是载入缺省./conf/nginx.conf配置文件,启动nginx。输入完成后,在浏览器中输入nginx所在电脑的ip(该ip地址可以通过ipconfig命令查看,或者直接输入127.0.0.1,localhost,也是可以的),得到下图所示页面,则表示nginx启动成功了。然后用户可以通过命令nginx.exe -s stop或者nginx.exe -s quit停止nginx。


 推流测试:

1.本地视频文件推流

ffmpeg -i video3.mp4 -f flv rtmp://127.0.0.1/live/test1

其中-i 表示输入流。这里的输入流是video3.mp4。-f 表示设定的输出格式。这里因为推流为rtmp流得使用flv格式,所以设成-f flv。因为是本机测试,所以推流的IP地址填127.0.0.1(也可以填用ipconfig命令查看到的nginx所在电脑的ip),推流地址为rtmp://127.0.0.1/live/test1。关于"live"目录,详情可见《 关于使用FFmpeg推流时,live目录的理解》。上述语句的意思是通过ffmpeg将媒体文件video3.mp4转换成rtmp流,推流到本机的nginx服务器中。

 

拉流测试

  拉流指的是用户端从服务器拉取语音视频流到客户端播放。下面我们会通过vlc拉流nginx中的语音视频流,然后在vlc播放。执行完上述推流的步骤后,我们在windows中打开vlc,点击“打开网络串流”,如下图所示:

 输入网络URL,如下图所示(因为是本机测试,所以IP地址填127.0.0.1,也可以填用ipconfig命令查看到的nginx所在电脑的ip))

可以看到在vlc中出现视频画面了,表示拉流成功了

2.实时推流

 


ffmpeg -f gdigrab -t 30 -framerate 15 -i desktop -f dshow -i audio="virtual-audio-capturer"  -f flv   rtmp://127.0.0.1/live/test

录屏电脑桌面并实时推流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java-superchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值