美文网首页程序员
基于Nginx和FFmpeg搭建流媒体服务器(Windows)

基于Nginx和FFmpeg搭建流媒体服务器(Windows)

作者: Winnnter | 来源:发表于2019-11-07 16:28 被阅读0次

    搭建Nginx环境

    1.下载并配置Nginx

        Nginx下载
        下载完成后,解压Nginx压缩包,并将Nginx的文件路径添加至环境变量。注意路径中不能有中文,80端口不被占用。

    添加至环境变量
    打开CMD,输入nginx -v若如下图所示,则表示安装配置成功。 Nginx配置成功

    2.Nginx常用命令(windows)

    + 查看nginx的版本号:nginx -v
    + 启动nginx:start nginx
    + 快速停止或关闭nginx:nginx -s stop
    + 正常停止或关闭nginx:nginx -s quit
    + 配置文件nginx.conf修改重装载命令:nginx -s reload
    

    3.搭建媒体服务器--配置Nginx http代理路径

    HLS协议是基于Http协议的,我们这里使用Nginx作为视频服务器。

    • nginx.conf
    # nginx.conf
    server { 
        listen 80; 
        server_name localhost; 
        #视频目录 
        location / {
           root   /;
           rewrite ^/video/(.*)$ /ApacheSoftware/ftpop/$1 break;
        }
    }
    

    FFmpeg

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

    FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"

    FFmpeg被许多开源项目采用,QQ影音、暴风影音等。

    1.FFmpeg环境搭建

        FFmpeg下载

    下载Windows适用的版本 下载Windows适用的版本

    2.配置环境变量

    将解压后的路径添加至环境变量中。


    配置环境变量

    打开CMD,输入ffmpeg -version若如下图所示,则表示配置成功。

    安装成功

    3.FFmpeg命令

    • 把avi格式转为mp4
    ffmpeg -i test.avi -c:v libx264 -s 1280x720 -pix_fmt yuv420p -b:a 63k -b:v 753k -r 18 .\test.mp4
    
    -c:v 视频编码为x264 ,x264编码是H264的一种开源编码格式。 
    -s 设置分辨率 
    -pix_fmt yuv420p:设置像素采样方式,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,它的作用是 根据采样方式来从码流中还原每个像素点的YUV(亮度信息与色彩信息)值。 
    -b 设置码率,-b:a和-b:v分别表示音频的码率和视频的码率,-b表示音频加视频的总码率。码率对一个视频质量有 很大的作用,后边会介绍。
     -r:帧率,表示每秒更新图像画面的次数,通常大于24肉眼就没有连贯与停顿的感觉了。
    
    # 码率
    码率又叫比特率即每秒传输的bit数,单位为bps(Bit Per Second),码率越大传送数据的速度越快。
    码率的计算公式是:文件大小(转成bit)/ 时长(秒)/1024 = kbps 即每秒传输千位数
    例如一个1M的视频,它的时长是10s,它的码率等于
    1*1024*1024*8/10/1024 = 819Kbps
    
    • mp4生成m3u8
    # 将test.mp4视频文件按每10秒生成一个ts文件,最后生成一个m3u8文件,m3u8文件就是ts的索引文件
    ffmpeg ‐i test.mp4 ‐hls_time 10 ‐hls_list_size 0 ‐hls_segment_filename ./hls/test_%05d.ts ./hls/test.m3u8
    
    -hls_time 设置每片的长度,单位为秒 
    -hls_list_size n: 保存的分片的数量,设置为0表示保存所有分片 
    -hls_segment_filename :段文件的名称,%05d表示5位数字
    

    测试

    • html 代码Demo
    <html>
    <head>
       <link href="https://cdn.bootcss.com/video.js/7.4.1/video-js.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/video.js/7.4.1/video.min.js"></script>
    <script src="https://cdn.bootcss.com/videojs-contrib-hls/5.11.0/videojs-contrib-hls.js"></script>
    </head>
    
    <body>
      <video id="my-video" class="video-js vjs-big-play-centered" controls="controls" preload="auto" width="1280" height="480"
      poster="http://192.168.1.36/video/test.jpg" data-setup="{}">
        <source src="http://192.168.1.36/video/demo1/test.m3u8" type='application/x-mpegURL'>
        <p class="vjs-no-js">
          To view this video please enable JavaScript, and consider upgrading to a web browser that
          <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
        </p>
      </video>
    </body>
    </html>
    
    • 将html Demo文件、视频ts分片以及索引文件m3u8放置在Nginx指向的路径下。
      通过Nginx 的http代理来访问Demo html文件。
    http://192.168.1.36/video/html/index.html
    

    相关文章

      网友评论

        本文标题:基于Nginx和FFmpeg搭建流媒体服务器(Windows)

        本文链接:https://www.haomeiwen.com/subject/thhvbctx.html