查看: 1051|回复: 0

[原创] 【BPI-M2 berry试用心得】直播平台最终版本

[复制链接]

主题

好友

679

积分

举人

  • TA的每日心情
    开心
    2017-12-20 11:14
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-11-13 21:16:43 |显示全部楼层
    本帖最后由 手手挤挤 于 2017-11-13 22:20 编辑

    目录
    1、直播环境搭建
    2、网站环境搭建
    3、开机自启动设置

    -----------------------------------------------------------------------------------------------------------
    前面已经完成了基本直播平台的搭建,实现了obs以rtmp推流到nginx,再用vlc使用rtmp、hls拉流到本地的一个循环,可以看到这个过程是比较麻烦的,特别是笔者是做直播平台开发的,经常要利用直播平台来调试代码,这么复杂的操作,一个循环下来就基本不想写代码了,所以这个主题的目的是让笔者能够一步到位,直接打开整个推流、拉流的过程。
    1、直播环境搭建
    基本的搭建请参照前面帖子,主要是建立两个直播的发布点,一个用于rtmp拉流、一个用于hls拉流,主要的配置(/usr/local/nginx/conf/nginx.conf)如下
    1. rtmp {   
    2.      
    3.     server {   
    4.      
    5.         listen 1935;
    6.           publish_time_fix on;
    7.         chunk_size 4000;   
    8.            

    9.         application carlpc{
    10.                 live on;
    11.                 allow publish all; # control access privilege
    12.              allow play all; # control access privilege
    13.         }
    14.             
    15.         application carlpc_hls {  
    16.             live on;   
    17.             hls on;   
    18.             hls_path /home/pi/hls;   
    19.             hls_fragment 5s;
    20.             hls_base_url http://192.168.137.66/hls/;  
    21.                 allow publish all;
    22.                 allow play all;
    23.         }   
    24.     }   
    25. }
    复制代码
    其中,需要注意的是hls的配置上需要标明hls base url,这样生成的m3u8文件才能找到对应的切片文件。
    接着,为了通过http协议能访问切片和索引文件,需要在http模块设置关于切片和索引的location
    配置如下
    1. location /hls  {
    2.             types{
    3.                 application/vnd.apple.mpegurl m3u8;
    4.                 video/mp2t ts;
    5.             }
    6.             root  /home/pi/;
    7.                 add_header Cache-Control no-cache;
    8.    #         expires -1;
    9.         }
    复制代码
    其中,需要注意  root与alias两个配置方式的不同,本文采用root的方式进行配置。到这里,直播服务器的搭建结束。
    然后,是推流模块的设置,前面帖子写到采用OBS进行推流,笔者尝试编译安装obs,最终记得是因为显卡不支持的原因放弃,最后采用ffmpeg的方式进行推流,ffmpeg的安装可以笔者介绍两种便捷的方式。
    第一种,直接使用apt-get install ffmpeg是最方便的;
    但是有的linux尚未有ffmpeg的安装包,并且有的平台采用此方式安装的ffmpeg版本老,一些指令支持(比如centos),因此介绍第二种。
    第二种,下载别人编译好的文件
    1. https://www.johnvansickle.com/ffmpeg/
    复制代码
    有了ffmpeg了,接下来是利用ffmpeg进行文件的推流,有个参数是-stream_loop -1 循环推流,这样我就不用管推流了,让他一直推流。
    1. ffmpeg -re -stream_loop -1 -i /home/pi/ffmpeg/test.mp4 -c copy -f flv rtmp://localhost:1935/carlpc
    复制代码
    至此,服务器、推流模块全部搭建完成。
    2、网站环境搭建
    拉流最方便的就是打开网页,自动拉取视频流。因此,网站环境的目的在于利用网页访问之前设置的hls索引和切片所在的文件夹。
    配置也很简单,主要在于声明网页的location即可,笔者直接将其声明在根目录下,配置如下
    1. location / {
    2. #           root   html;
    3.   #         index  index.html index.htm;
    4.                 root /home/pi/hhh;
    5.                 index index.html index.htm;
    6.         }
    复制代码
    接下来,编辑index.html网页。这里需要网页播放器的支持,首选当然是videojs啦,所以采用videojs播放器来播放hls流。index。html的配置如下

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset=utf-8 />
    5. <title>Carlpc的直播小站</title>



    6.   <link  rel="stylesheet">
    7.   <script src="https://unpkg.com/video.js/dist/video.js"></script>
    8.   <script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
    9.   
    10. </head>
    11. <body>
    12.   <h1>直播站--HLS</h1>

    13.   <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="683" height="384"
    14.   data-setup='{"autoplay": true}'>
    15.     <source src="http://192.168.137.66:80/hls/test.m3u8" type="application/x-mpegURL">
    16.   </video>

    17.   <script>
    18.   </script>
    19.   
    20. </body>
    21. </html>
    复制代码
    写完后,还没完记得给这个文件夹、父文件夹、以及该文件添加权限,权限掩码777,最后的效果动图如下。
    2017-11-13_22-05-04.gif

    3、开机自启动设置
    人总是越来越懒,做完这些,笔者觉得还不够,因为要用的时候还要开机,打命令好麻烦,所以,那个推流命令,你开机自己启动吧,所以就有了接下来的内容。
    第一种,脚本启动,(编辑/etc/rc.local),把前面的推流命令写进脚本保存在1.sh中,并在rc.local文件倒数第行添加以下命令
    1. /usr/local/nginx/sbin/nginx
    2. /home/pi/ffmpeg/rtmp &
    3. /home/pi/ffmpeg/1.sh &
    复制代码
    我想看启动过程出错的信息咋办,文件头加入以下命令
    1. exec 2> /tmp/rc.local.log      # send stderr from rc.local to a log file
    2. exec 1>&2                      # send stdout to the same log file
    3. set -x                         # tell sh to display commands before execution
    复制代码
    到这里,笔者用来调试用的直播推流、拉流平台的搭建就完成了。
    好吧,全程完全没有代码,全是配置,但也要装得像一点,所以我用了楷体来编辑整篇文章,可依@ky123 ,你说溜不溜

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网

    GMT+8, 2018-10-17 05:29 , Processed in 0.132310 second(s), 13 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001056号

    Powered by Discuz!

    返回顶部