HLS流媒体部署
昨天部长要我搞一个流媒体的服务器,本来以为很难谁知道如此简单,感谢网上的大佬们下面说说流程和我部署的流程,稍微会一点的就知道我比较啰嗦,为了萌新多担待下
先说一下我是看到了这篇文章进行操作的感谢大佬:
https://www.cnblogs.com/xuey/p/9244434.html
第一步配置nginx 系统ubantu 系统(记得关闭防火墙)
下面需要用到的压缩包:
链接:https://pan.baidu.com/s/16KmxO-Z-s3tNsbb2KVAF9A
提取码:76ar
我是参考https://blog.csdn.net/redstarofsleep/article/details/45092127这位大佬的与其说参考还不如说是照搬,嘿嘿(感谢大佬)其中还是有些细微的差别的先看我这个吧。
1.第一个需要C++编译器,在ubuntu下直接安装g++即可
apt-get install g++
2.找的资料是在官网下载,但我就openssl-1.0.1i.tar.gz找到了,其他我找的csdn花钱下载的(心疼我的一块五)
pcre-8.32.tar.gz,zlib-1.2.8.tar.gz,openssl-1.0.1i.tar.gz
3.当然解压下载的东西了(解压的路径一定要记好后面有用哦)
tar -xzvf pcre-8.32.tar.gz
tar -xzvf zlib-1.2.8.tar.gz
tar -xzvf openssl-1.0.1i.tar.gz
4.在同文件下(也就是home/user文件下),下载
nginx-rtmp-module
下载命令git clone https://github.com/arut/nginx-rtmp-module.git
(ubantu如果没安装git记得先安装哟 apt-get install git )
我是在home文件夹里建立了一个user文件夹把压缩包放进去然后解压到当前文件夹的
4.下载nginx 我是去官网下载的最新版本, 如果想和我一样 我稍等上传到百度云
我下载的是 nginx-1.18.0.tar.gz
tar -xzvf nginx-1.18.0.tar.gz
然后也是放到user文件 解压到当前文件夹里的
然后进去文件 cd nginx-1.18.0
然后执行:
./configure --prefix=/usr/local/nginx --with-pcre=/home/user/pcre/pcre-8.32 --with-zlib=/home/user/zlib/zlib-1.2.8 --with-openssl=/home/user/openssl/openssl-1.0.1i --add-module=/home/user/nginx-rtmp-module
解释一下:
--prefix=/usr/local/nginx //是你安装的路径
--with-pcre=/home/user/pcre-8.32 //nginx安装默认会自动检测系统是否安装pcre,无需指定编译参数,如果系统没有pcre,会报错提示缺乏依赖库。(切记路径要对哦)
--with-zlib=/home/user/zlib-1.2.8 //同上都是安装依赖库(切记路径要对哦)
--with-openssl=/home/openssl/openssl-1.0.1i //同上都是安装依赖库(切记路径要对哦)
重要的事说三遍 ,因为我被坑了编不过去当时一个劲的怀疑是版本的问题,哎
然后执行make 和make install
记录下以前的错误 如果make找不到执行下面的还是出错,找找百度吧,我也不知道了
ubantu make找不到
sudo apt-get install build-essential
然后进去下 nginx安装的路径启动下 看是否报错 路径就是上面设置的哦
--prefix=/usr/local/nginx //是你安装的路径 /usr/local/nginx是设置的路径
然后打开 sbin文件执行 nginx
然后打开浏览器输入
http://自己虚拟机的ip //例如 http://192..168.8.108 192.168.8.108是我自己虚拟机的ip
出现 nginx的欢迎界面成功了
或者你执行netstat -ltn
看看80端口开启了吗
然后./nginx -s stop(强制结束nginx)或者./nginx -s quit(温柔结束nginx)
./nginx -s reload (修改配置文件后重新加载生效)
二:安装FFmpeg
简单说一下,ffmpeg是真的好用!!以后如果搞音视频你缺不了它。
借鉴下大佬的https://blog.csdn.net/redstarofsleep/article/details/45092145
1.当然是下载安装包了ffmpeg-2.4.1.tar.bz2 和 last_x264.tar.bz2
其实我下载是 ffmpeg官网的最新版ffmpeg-4.2.3.tar.bz2
last_x264.tar.bz2
在哪里下的我给忘了(但最新的版本都有h264编码我认为这个可以不下载了,但我为了避免麻烦还是加上了,我后面上传到百度云,有需要可以下载 所以下,FFmpeg已经支持HEVC编码了非常厉害)。
2.libx264需要yasm,所以先安装yasm
apt-get install yasm
3.然后安装libx264
aptitude install libx264-dev
4.解压 last_x264.tar.bz2
tar -xjvf last_x264.tar.bz2
5.安装libx264
./configure --enable-shared --enable-pic
make
make install
6.下面就是安装依赖哦(按顺序安装不要偷懒也不要漏下哦)
注意:没安装aptitude 要先安装哦 apt-get install aptitude
(1) aptitude install libfaac-dev
(2) aptitude install libmp3lame-dev
(3) aptitude install libtheora-dev
(4) aptitude install libvorbis-dev
(5) aptitude install libxvidcore-dev
(6) aptitude install libxext-dev
(7) aptitude install libxfixes-dev
7.解压ffmpeg
tar -xjvf ffmpeg-2.4.1.tar.bz2
8.然后编译安装
然后进去文件 cd ffmpeg-4.2.3 大哥们找好你们自己解压的路径进去哦。
注意哦:可能安装不上原因是因为有两个依赖找不到我也找不到原因,把这两个去掉就好了
我记得好像是–enable-libfaac和–enable-x11grab 如果报错的话去掉就好了,我后面测了没什么影响原谅我这个菜鸡。注意复制的时候空格和转行我被坑了
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis
如果报错:新的执行命令是
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-libvorbis
执行完后 执行
make
make install
接下来就比较简单了配置好就行。
三;配置nginx
1.打开你安装的nginx文件找到nginx.conf
1.在http service 里面加个 location /hls
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
然后listen 80改成8080
2.配置rtmp
在最后面配置
rtmp {
server {
listen 1935;
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
hls_fragment 5s;
}
}
然后重启下nginx 重启方法我在文中写到了哦
然后输入 netstat -ltn
看看是否开启了,如果开启了会有一个8080端口还有1935端口哦
然后用ffmpeg推流到nginx:
事先找好 一个mp4格式的文件
放到ubantu 某个文件里
然后执行
RTMP流,推流至rtmplive:
ffmpeg -re -i "/usr/ceshi.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://这里填写自己的ip地址哦:1935/rtmplive/test1
注释:// /usr/ceshi.mp4 就是你放入ubantu系统的位置
HLS流,推流至hls:
ffmpeg -re -i "/usr/ceshi.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://这里填写自己的ip地址哦:1935/hls/test2
注释:// /usr/ceshi.mp4
就是你放入ubantu系统的位置
解释下:HLS推流你会看到非常多的ts临时文件 在 /tmp/hls文件下。这些都是临时的,nginx会定时删除类似于直播类型
当推流的时候可以查看你推流出去的视频
下载vlc播放器然后 左上角有个媒体,点击然后 打开网络串流,网络,然后输入 地址就好了
媒体->打开网络串流->网络,输入ip
如果是正在RTMP流,推流至rtmplive:
那就输入: rtmp://自己的ip:1935/myapp/test1
HLS流,推流至hls:
那就输入:http://自己的ip:8080/hls/test2.m3u8