【BPI-M2 berry试用心得】直播平台最终版本
其他
4881 人阅读
|
0 人回复
|
2017-11-13
TA的每日心情 | 开心 2017-12-20 11:14 |
|---|
签到天数: 5 天 连续签到: 1 天 [LV.2]偶尔看看I
童生
- 积分
- 168
|
本帖最后由 手手挤挤 于 2017-11-13 22:20 编辑
目录
1、直播环境搭建
2、网站环境搭建
3、开机自启动设置
-----------------------------------------------------------------------------------------------------------
前面已经完成了基本直播平台的搭建,实现了obs以rtmp推流到nginx,再用vlc使用rtmp、hls拉流到本地的一个循环,可以看到这个过程是比较麻烦的,特别是笔者是做直播平台开发的,经常要利用直播平台来调试代码,这么复杂的操作,一个循环下来就基本不想写代码了,所以这个主题的目的是让笔者能够一步到位,直接打开整个推流、拉流的过程。
1、直播环境搭建
基本的搭建请参照前面帖子,主要是建立两个直播的发布点,一个用于rtmp拉流、一个用于hls拉流,主要的配置(/usr/local/nginx/conf/nginx.conf)如下- rtmp {
-
- server {
-
- listen 1935;
- publish_time_fix on;
- chunk_size 4000;
-
- application carlpc{
- live on;
- allow publish all; # control access privilege
- allow play all; # control access privilege
- }
-
- application carlpc_hls {
- live on;
- hls on;
- hls_path /home/pi/hls;
- hls_fragment 5s;
- hls_base_url http://192.168.137.66/hls/;
- allow publish all;
- allow play all;
- }
- }
- }
复制代码 其中,需要注意的是hls的配置上需要标明hls base url,这样生成的m3u8文件才能找到对应的切片文件。
接着,为了通过http协议能访问切片和索引文件,需要在http模块设置关于切片和索引的location
配置如下- location /hls {
- types{
- application/vnd.apple.mpegurl m3u8;
- video/mp2t ts;
- }
- root /home/pi/;
- add_header Cache-Control no-cache;
- # expires -1;
- }
复制代码 其中,需要注意 root与alias两个配置方式的不同,本文采用root的方式进行配置。到这里,直播服务器的搭建结束。
然后,是推流模块的设置,前面帖子写到采用OBS进行推流,笔者尝试编译安装obs,最终记得是因为显卡不支持的原因放弃,最后采用ffmpeg的方式进行推流,ffmpeg的安装可以笔者介绍两种便捷的方式。
第一种,直接使用apt-get install ffmpeg是最方便的;
但是有的linux尚未有ffmpeg的安装包,并且有的平台采用此方式安装的ffmpeg版本老,一些指令支持(比如centos),因此介绍第二种。
第二种,下载别人编译好的文件- https://www.johnvansickle.com/ffmpeg/
复制代码 有了ffmpeg了,接下来是利用ffmpeg进行文件的推流,有个参数是-stream_loop -1 循环推流,这样我就不用管推流了,让他一直推流。- ffmpeg -re -stream_loop -1 -i /home/pi/ffmpeg/test*** -c copy -f flv rtmp://localhost:1935/carlpc
复制代码 至此,服务器、推流模块全部搭建完成。
2、网站环境搭建
拉流最方便的就是打开网页,自动拉取视频流。因此,网站环境的目的在于利用网页访问之前设置的hls索引和切片所在的文件夹。
配置也很简单,主要在于声明网页的location即可,笔者直接将其声明在根目录下,配置如下- location / {
- # root html;
- # index index.html index.htm;
- root /home/pi/hhh;
- index index.html index.htm;
- }
复制代码 接下来,编辑index.html网页。这里需要网页播放器的支持,首选当然是videojs啦,所以采用videojs播放器来播放hls流。index。html的配置如下
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset=utf-8 />
- <title>Carlpc的直播小站</title>
-
- <link rel="stylesheet">
- <script src="https://unpkg.com/video.js/dist/video.js"></script>
- <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
-
- </head>
- <body>
- <h1>直播站--HLS</h1>
- <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="683" height="384"
- data-setup='{"autoplay": true}'>
- <source src="http://192.168.137.66:80/hls/test.m3u8" type="application/x-mpegURL">
- </video>
- <script>
- </script>
-
- </body>
- </html>
复制代码 写完后,还没完记得给这个文件夹、父文件夹、以及该文件添加权限,权限掩码777,最后的效果动图如下。
3、开机自启动设置
人总是越来越懒,做完这些,笔者觉得还不够,因为要用的时候还要开机,打命令好麻烦,所以,那个推流命令,你开机自己启动吧,所以就有了接下来的内容。
第一种,脚本启动,(编辑/etc/rc.local),把前面的推流命令写进脚本保存在1.sh中,并在rc.local文件倒数第二行添加以下命令- /usr/local/nginx/sbin/nginx
- /home/pi/ffmpeg/rtmp &
- /home/pi/ffmpeg/1.sh &
复制代码 我想看启动过程出错的信息咋办,文件头加入以下命令- exec 2> /tmp/rc.local.log # send stderr from rc.local to a log file
- exec 1>&2 # send stdout to the same log file
- set -x # tell sh to display commands before execution
复制代码 到这里,笔者用来调试用的直播推流、拉流平台的搭建就完成了。
好吧,全程完全没有代码,全是配置,但也要装得像一点,所以我用了楷体来编辑整篇文章,可依@ky123 ,你说溜不溜
|
|
|
|
|
|
|
|
|