本文介绍: 前文已经介绍了RTSP、RTMP、HLS的流媒体协议,还有一种比较常见流媒体协议HTTP FLV,其兼具RTMP的实时性及HLS的网络适应性的优点,在很多直播领域广泛应用。协议名HTTP FLVRTMPHLS传输方式HTTPTCPHTTP视频封装格式flvTS视频时延低低高数据格式连续音视频流连续音视频流TS切片文件web插件播放支持通过flv.js支持需要flash插件支持直接HTML5的video标签即可播放防火墙代理穿透支持支持

使用nginx搭建HTTP FLV流媒体服务器

1 HTTP FLV简介

前文已经介绍了RTSP、RTMP、HLS的流媒体协议,还有一种比较常见流媒体协议HTTP FLV,其兼具RTMP的实时性及HLS的网络适应性的优点,在很多点直播领域广泛应用网上有人总结了HTTP FLV、RTMP、HLS的对比,如下所示

协议名 HTTP FLV RTMP HLS
传输方式 HTTP TCP HTTP
视频封装格式 flv chunk(rtmp header+bodytag body)) TS
视频时延
数据格式 连续音视频流 连续音视频流 TS切片文件
web插件播放 支持通过flv.js 支持需要flash插件 支持直接HTML5的video标签即可播放
防火墙代理穿透 支持 不支持 支持

其中当前直播流域用的最广泛的是RTMP和HTTP-FLV,因为其非常低的视频时延,可做到1s左右,本文介绍HTTP FLV的流媒体服务搭建方式,有关FLV格式文章,参照:https://blog.csdn.net/water1209/article/details/128562747
HTTP-FLV是将流媒体数据封装成FLV格式然后通过HTTP协议传输客户端,通过HTTP FLV的直播,这里使用了一个HTTP的协议约定,httpcontentlength字段如果不存在,则客户端就会一直接收数据,直到HTTP连接断开为止,其流程简单,视频客户端发送HTTP请求,不带contentlength字段服务器响应HTTP,并一直发送FLV的数据;客户端接收响应并一直接收数据直到连接断开
有关HLS、RTMP、FLV通过nginx搭建相关协议的流媒体服务器文章,公众号壹零仓发送nginx查看相关文章

2 HTTP FLV流媒体服务搭建

nginxhttpflvmodule基于nginxrtmpmodule开发的,包含nginxrtmpmodule所有功能,因此不能nginxrtmpmodule同时安装,其编译安装步骤nginxrtmpmodule类似,如下

  1. 安装依赖库:
    nginx编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装
    yum -y install gcc gcc-c++
    nginxhttp模块使用pcre解析正则表达式pcredevel 是使用 pcre 开发一个二次开发库,nginx需要依赖两个库,执行如下命令
    yum install -y pcre pcre-devel
    nginx使用zlibhttp包的内容进行gzip,需要安装此库:
    yum install -y zlib zlib-devel
    nginx可能需要支持HTTPS,最好系统安装openssl,一般系统自带,可通过如下命令确认
    openssl version
    如果安装了会显示版本号,如果提示安装执行如下命令安装:
    yum install -y openssl openssl-devel

  2. nginx编译和安装

  1. 修改nginx相关配置支持HTTP FLV
    在/home/wangdenuan/nginx/conf/nginx.conf文件中增加:
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        meta off;#为了兼容flvj.js
                        hls on;
                        hls_path /tmp/hls;
                        hls_fragment 4;
                        hls_playlist_length 30;
                        record off;
                        allow play all;
                }
        }
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /hls{
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias /tmp/hls;
            expires -1;
        }
        location /flv {
                flv_live on;
                chunked_transfer_encoding on;                         #支持'Transfer-Encoding: chunked'方式回复
                add_header 'Access-Control-Allow-Origin' '*';         #添加额外的 HTTP 头
                add_header 'Access-Control-Allow-Credentials' 'true'; #添加额外的 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;
        }
    }

}

配置与RTMP配置增加了HTTP FLV的URI的配置。
配置完成后,执行/home/wangdenuan/nginx/sbin/nginx -s reload,使得配置生效

3 结果验证

原文地址:https://blog.csdn.net/water1209/article/details/128708318

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45100.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注