2018-02-07

作者: gakoii | 来源:发表于2018-02-08 18:22 被阅读481次

在mac上搭建简单的hls推流服务器

最近公司要有在网页端用hls推流来播放全景视频的需求,难点在于全景播放器的兼容性问题。目前市场上已有成熟的产品是krpano,但是公司希望我去调研下。常年iOS开发的我只好找了两天的开源项目,目前选定videojs来做播放器,结合公司的渲染器来完成。

为了测试demo,先完成在自己的mac上搭建一个hls的推流服务器。一搜索基本全都是用ngnix搭建的,根据各种教程,磕磕绊绊用了半天多时间才搞定。特地把遇到的坑做个记录。

第一步:安装brew

$ /usr/bin/ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

第二步:安装nginx服务器

$ brew tap homebrew/nginx

报错:Error: homebrew/nginx was deprecated. This tap is now empty as all its formulae were migrated.

随后换了个github的项目(https://github.com/denji/homebrew-nginx)成功了:

$ brew tap denji/nginx

$ brew install nginx-full --with-upload-module

安装成功之后可查看信息:

$ brew options nginx-full

$ brew info nginx-full

第三步:开始启动服务器

$ sudo nginx

发生错误:

nginx: [emerg] bind() to 0.0.0.0:1935 failed (48: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:1935 failed (48: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:1935 failed (48: Address already in use)

nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)

发现前面有尝试过开启,虽然报错了,端口还是被占用了

$ sudo nginx -s stop

顺利开启之后,开始配置hls支持

第四步:配置hls

worker_processes 1;

#error_log  logs/error.log debug;

events {

    worker_connections  1024;

}

rtmp {

    server {

        listen 1935;

        application zbcs {

                live on;

                record off;

            }

        #配置HLS支持开始

        application hls {

            live on;

            hls on;

            hls_path /usr/local/var/www/hls;

            hls_fragment 5s;

        }

        #配置HLS支持结束

    }

}

http {

    server {

            listen      8080;

            server_name  localhost;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {

                root  html;

                index  index.html index.htm;

            }

          #HLS可在http下访问

            location /hls {

                # Serve HLS fragments

                types {

                    application/vnd.apple.mpegurl m3u8;

                    video/mp2t ts;

                }

                root /usr/local/var/www;

                add_header Cache-Control no-cache;

            }

          #HLS在http结束

            #error_page  404              /404.html;

            # redirect server error pages to the static page /50x.html

            #

            error_page  500 502 503 504  /50x.html;

            location = /50x.html {

                root  html;

            }

    }

}

然后重新load配置文件

$ sudo nginx -s reload

报错:

nginx: [error] open() "/usr/local/var/run/nginx.pid" failed (2: No such file or directory)

需要重新设置一下配置文件:

$ sudo nginx -c /usr/local/etc/nginx/nginx.conf

$ sudo nginx -s reload

$ sudo nginx //开启服务器

还有一种错误:

[emerg] 31225#0: unknown directive "rtmp" in /usr/local/etc/nginx/nginx.conf:9

这是因为rtmp 模块没有加进去,需要重新安装一下:

$ brew uninstall nginx-full// 删除

$ nginxbrew install nginx-full --with-rtmp-module// 安装

终于到了第五步:利用ffmpeg推送流:

$ brew install ffmpeg // 安装ffmpeg

$ ffmpeg -re -i 视频的据对路径 -vcodec copy -acodec copy -f flv rtmp://localhost:1935/hls/movie //指向在/usr/local/var/www 下建立一个可读可写的hls文件夹

结果ts文件虽然是有一直生成,但是不能播放:

$ ffmpeg -re -i 视频的据对路径 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://127.0.0.1:1935/hls/movie // 搞定

可通过直接访问:

http://localhost:8080/hls/movie.m3u8

相关文章

  • 2018-02-07-00714班作业汇总

    1、2018-02-07演讲战队作业雨汇总 2、2018-02-07投资组作业雨汇总 3、2018-02-07英语...

  • es6-Symbol

    title: es6-Symboldate: 2018-02-07 22:40:00tags: es6 前言 突然...

  • 每日确定

    New logo 创作你的创作 免费下载 2018-02-07 180 孙仕霞 简书作者 2018.02.06 0...

  • 险峰

    2018-02-07 ——岁月如歌诗词选(第二集.37) 覌微信《毕福剑之后,赵...

  • 145|怎样战胜“女孩没有男孩聪明”的偏见?

    145|怎样战胜“女孩没有男孩聪明”的偏见? Dr. 魏 2018-02-07 145|怎样战胜“女孩没有男孩聪明...

  • 寒假见闻

    寒假见闻 2018-02-07 作者:柠檬的味道像雨天 977685人读过 寒假里,发生过许多愉快的事...

  • 2018-02-07

    禾隆李亮 2018-02-07 21:23 · 字数 270 · 阅读 3 · 日记本 【日精进打卡第34天】 宁...

  • 一朵敢于争先的小花

    古树望月 2018-02-07 03:45 · 字数 471 · 阅读 1 · 日记本 春天和夏天不同,春天里大...

  • 基金定投

    关于基金定投 木沁原 2018-02-07 14:53 · 字数 392 · 阅读 1 · 日记本 基金定投:定期...

  • 一篇气死99个老师的中学生作文

    一篇气死99个老师的中学生作文 2018-02-07 作者:柠檬的味道像雨天 85567人读过 ...

网友评论

    本文标题:2018-02-07

    本文链接:https://www.haomeiwen.com/subject/anbfoxtx.html