工作需要,公司要求实现录屏功能并将录屏视频上传到服务器上
本人想了很多种方式,最终使用领导找到的ffmpeg来实现功能
一、首先安装ffmpeg
选择windows下载:地址FFmpeg
二、配置环境变量
执行下面命令查看是否配置成功
如上所示即成功
三、安装录屏软件
地址:on screen capture recorder to video free - Browse Files at SourceForge.net
下载并安装
四、执行命令查询可用设备
ffmpeg -list_devices true -f dshow -i dummy
DirectShow video devices:流媒体设备
screen-capture-recorder:刚刚安装的视频捕获设备
virtual-audio-capturer:音频捕获设备
五、安装服务器端
首先下载组件nginx-rtmp-module-master
[root@localhost data]# wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
[root@localhost data]# unzip master.zip
#修改文件夹名
[root@localhost data]# mv nginx-rtmp-module-master nginx-rtmp-module
#将文件移动到nginx目录平级
[root@localhost data]# mv nginx-rtmp-module /usr/local/
下载完成后解压并修改文件名
安装nginx,不再详解,请看本人nginx安装,主要是命令不一样
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx-rtmp-module --with-http_ssl_module
配置nginx
http{}
rtmp {
server {
listen 1935;
chunk_size 4000;
application mylive {
live on;
record all;
record_path /home/live_record;
record_max_size 200M;
hls on;
# 注意此地址设置,hls_path 代表 hls 目录及.m3u8文件的保存目录
hls_path /var/www/html/hls;
hls_fragment 1s;
hls_playlist_length 5;
allow play all;
}
}
}
创建文件夹并赋权限:chmod 777 live_record
六、在浏览器端写ffmpeg命令
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>
js调用cmd命令行
</title>
</head>
<body>
<input type="button" value="启动" onclick="ffmpegRun()"/> <br/>
<input type="button" value="结束" onclick="record_stop()"/> <br/>
<input type="button" value="推流" onclick="sendFfmpegFile()"/> <br/>
</body>
<script type="text/javascript">
var FfmpedFileName = "";
function ffmpegRun() {
sendFileName = getffmpegFileName();
var cmd = new ActiveXObject("WScript.Shell");
// 命令执行
var ffmpegCmd = "ffmpeg -f dshow -i video=\"screen-capture-recorder\" -f dshow -i audio=\"virtual-audio-capturer\" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f flv rtmp://192.168.75.132:1935/mylive/"+sendFileName;
cmd.run(ffmpegCmd,0);
}
/**
* 关闭
*/
function record_stop() {
var cmd = new ActiveXObject("WScript.Shell");
// 命令执行
var ffmpeg = "taskkill /f /im ffmpeg.exe";
cmd.run(ffmpeg);
}
function getffmpegFileName() {
var agent = "123123";
var myDate = new Date();
var year = myDate.getFullYear();
var month = myDate.getMonth();
month = parseInt(month)+1;
var date = myDate.getDate();
var hours = myDate.getHours();
var minutes = myDate.getMinutes();
var seconds = myDate.getSeconds();
var milliseconds = myDate.getMilliseconds();
var name = agent+"-"+year+"-"+month+"-"+date+"-"+hours+"-"+minutes+"-"+seconds+"-"+milliseconds;
return name;
}
</script>
</html>
然后启动nginx,使用IE打开浏览器,点击启动,然后结束就可以在服务器上看到录屏信息了;
八、播放录屏
/**
* 播放
*/
function record_play() {
var cmd = new ActiveXObject("WScript.Shell");
// 命令执行
var ffmpeg = "ffplay -x 1500 -y 800 -window_title 播放录屏 -loop 0 http://192.168.75.132/950203-2021-6-8-11-30-7-94.flv";
cmd.run(ffmpeg);
}