• 搭建nginx流媒体服务器(支持HLS)


    环境搭建

    (一)下载源代码

    nginx,地址:http://nginx.org/可以选择需要的版本下载

    nginx_mod_h264_streaming-2.2.7.tar.gz ,支持MP4流,具体的说明在下面的这个网页

    http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2

    m3u8-segmenter: HLS分片工具 ,下载地址,https://github.com/johnf/m3u8-segmenter

    ffmpeg:媒体编解码工具,这里做为HLS 直播流的发布工具

    (二)安装nginx

    tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

    tar -zxvf nginx-1.4.4.tar.gz

    cd nginx-1.4.4

    ./configure  --prefix=/usr/local/nginx-stream --with-debug  --with-http_dav_module  --with-http_gzip_static_module  --with-http_ssl_module   --with-ipv6 --with-sha1=/usr/include/openssl  --with-md5=/usr/include/openssl  --add-module=../nginx_mod_h264_streaming-2.2.7  --with-http_flv_module  --with-http_mp4_module

    如果没有出现错误

    make

    如果出现错误类似:‘ngx_http_request_t’ 没有名为 ‘zero_in_uri’ 的成员,则进入 nginx_mod_h264_streaming-2.2.7目录,进入src,修改 ngx_http_streaming_module.c,注释掉 TODO window32 模块下的:

    if (r->zero_in_uri) {

    return NGX_DECLINED;

    }

    然后make clean之后重新configure和make

    如果出现错误类似:[objs/addon/src/mp4_reader.o]..进入nginx源码中的obis目录,修改Makefile,删除 --wrror

    然后重新编译make

    编译通过后

    sudo make install

    (三)安装 m3u8-segmenter,这个在下载地址中有安装步骤。

    (四)安装ffmpeg,在本博客其它日志中有安装方式。

     

    配置

     在server模块下加入以下内容:

     location /hls {

    alias /usr/local/media/hls;

    types {

    application/vnd.apple.mpegurl m3u8;

    video/mp2t ts;

    }

    add_header Cache-Control no-cache;

    expires -1;

    }

    location ~* .flv$ {

    flv;

    root /usr/local/media/flv;

    }

    location ~* .mp4$ {

    mp4;

    root /usr/local/media/mp4;

    }

    然后保存退出,启动nginx服务器

    点播flv,mp4视频

    在FLV和MP4的根目录(usr/local/media/flv,/usr/local/media/mp4)分别放入测试视频test.flv和test.mp4

    使用ffmpeg中的播放器ffplay测试,

    ffplay http://ip:port/test.flv

    ffplay http://ip:port/test.mp4

    HLS 点播 

    使用m3u8-segmenter把视频切成一系列TS文件同时生成后缀为m3u8的播放列表,视频编码需为H264/AAC 或者H264/MP3。

    进入  /usr/local/media/hls,放入测试文件test.ts,然后使用以下命令分割,

    m3u8-segmenter -i testvod.ts -d 10 -p test -m testvod.m3u8 -u http://ip:port/hls/

     -i ,输入文件

    -d ,每个分片的时长

    -p ,每个分片的名称的前缀

    -m ,播放列表名称

    -u ,播放列表中url前缀

    使用ffplay测试:

    ffplay http://ip:port/hls/test.m3u8

    HLS直播

    使用ffmpeg发布直播流,这里没有用设备抓取视频,使用ffmpe 的-re选项来模拟直播流,re表示依照输入视频的帧率

    ffmpeg -re -i test.ts -codec copy -hls_time 10 testlive.m3u8

    使用ffplay测试

    ffplay http://ip:port/hls/testlive.m3u8

    注:mp4转ts ,ffmpeg -i test.mp4 -codec copy -vbsf h264_mp4toannexb test.ts

            hls协议支持自适应码率,可以使用播放列表的嵌套,nginx-rtmp-module对hls有类似的一些支持

  • 相关阅读:
    BZOJ1257:[CQOI2007]余数之和——题解+证明
    BZOJ3781:小B的询问——题解
    BZOJ2038:[2009国家集训队]小Z的袜子——题解
    BZOJ3052 & UOJ58:[WC2013]糖果公园——题解
    BZOJ1086:[SCOI2005]王室联邦——题解
    BZOJ1878:[SDOI2009]HH的项链——题解
    BZOJ2453:维护队列——题解
    美团新零售招聘-高级测试开发(20k-50k/月)
    Shopee招聘-测试开发leader(30k-60k/月)
    蚂蚁金服招聘-无线测试开发(20k-36k/月)
  • 原文地址:https://www.cnblogs.com/fx2008/p/4227006.html
Copyright © 2020-2023  润新知