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

搭建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 Demo文件、视频ts分片以及索引文件m3u8放置在Nginx指向的路径下。
    通过Nginx 的http代理来访问Demo html文件。
http://192.168.1.36/video/html/index.html

你可能感兴趣的:(基于Nginx和FFmpeg搭建流媒体服务器(Windows))