ffmpeg实现录屏录音功能详解

工作需要,公司要求实现录屏功能并将录屏视频上传到服务器上

本人想了很多种方式,最终使用领导找到的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);
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值