搭建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环境搭建
下载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
网友评论