nginx搭建mp4、flv流媒体服务器

释放双眼,带上耳机,听听看~!

from: http://hi.baidu.com/injava/blog/item/40636f3169762f0eebc4afb8.html

 

nginx搭建mp4、flv流媒体服务器

2011-05-17 13:43

一、
FLV
视频发布方式简介

FLV
视频有两总发布方式

1、
  
HTTP
方式

这种方式要下载
FLV
视频文件到本地播放,一旦
FLV
视频文件下载完成,就不会消耗服务器的资源和带宽,但是拖动功能没有
RTMP/RTMP
流媒体方式强大,很多视频网站都是用
HTTP
方式实现的,如:
YouTube
,土豆,酷
6

2、
  
RTMP/RTMP
流媒体方式

这种方式不用下载
FLV
视频文件到本地,可以实时的播放
flv
文件,可以任意拖拽播放进度条,但是比较消耗服务器的资源,

 

 

二、
使用
nginx
来搭建
flv
流媒体服务器

1
、使用
nginx
来搭建
flv
流媒体服务器简介

nginx
中的
Flv Stream
模块能实现
flv
流媒体的功能
,
而且支持
flv
视频进度条拖拽,另外
nignx
还可以作为方向代理服务器代理后端基于
Flash Media Server
或者
Red5

RTMP/RTMP
流媒体服务器

 

2、
  
下面我们就来搭建一个完整的
nginx
流媒体服务器

1
)、
Nginx
服务器的安装

                      #
安装
zlib

tar xzvf zlib-1.2.3.tar.gz

                      cd zlib-1.2.3

                      ./configure

                      make && make install

                     #
安装
pcre

                      tar zxvf pcre-7.9.tar.gz

                      cd pcre-7.9

                      ./configure –prefix=/usr/local/pcre

                      make && make install

                     #添加mp4支持模块

                     wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz

                      tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz

                      #
安装
nginx

groupadd www

                      useradd -g www www

              
     tar xzvf nginx-0.8.34.tar.gz

              
     cd nginx-0.8.34

                     
     ./configure –add-module=../nginx_mod_h264_streaming-2.2.7 –with-http_ssl_module –with-pcre=/root/zhang/nginx/pcre-7.9 –with-zlib=/root/zhang/nginx/zlib-1.2.3 –user=www –group=www –prefix=/usr/local/nginx –with-http_flv_module 
–with-http_stub_status_module

              
        make && make install

2
)、安装
yamdi

         yadmi
的作用是为
flv
文件添加关键帧,才能实现拖动播放

                     #
下载
yadmi

                   wget 链接地址

                   #
安装
yadmi

           tar xzvf yamdi-1.4.tar.gz

                   cd yamdi-1.4

           make && make install

      使用方法:
yamdi -i input.flv -o out.flv

      给
input.flv
文件  
添加关键帧,输出为
out.flv
文件

       
   3
)、配置
nginx

              
  vi /usr/local/nginx/conf/nginx.conf 
添加以下内容(根据自身情况修改):

user
   www www;

worker_processes 30;

error_log
   /usr/local/nginx/logs/error.log
   crit;

pid
         /usr/local/nginx/logs/nginx.pid;

 

events {

         use epoll;

         worker_connections
       65535;

         }

http {

         include
        mime.types;

     
    default_type
   application/octet-stream;

         log_format main
   '$remote_addr – $remote_user [$time_local] '

                                                 '"$request" $status $bytes_sent '

                                                 '"$http_referer" "$http_user_agent" '

                                                 '"$gzip_ratio"';

         keepalive_timeout
   60;

         server_names_hash_bucket_size
   128;

         client_header_buffer_size
     32k;

 

         large_client_header_buffers
   4 32k;

 

   
      access_log off;

         gzip on;

         gzip_min_length
   1100;

         gzip_buffers
      4 8k;

         gzip_types
        text/plain;

 

         output_buffers
    1 32k;

         postpone_output
   1460;

 

         client_header_timeout
   3m;

         client_body_timeout
     3m;

         send_timeout
            3m;

 

         sendfile
                 on;

         tcp_nopush
               on;

         tcp_nodelay
              on;

 

######################################################################

 

server {

         listen
        80;

         server_name
   192.168.1.105;

         root
     /usr/local/nginx/html/flv_file/;

        limit_rate_after 5m;    ####在flv视频文件下载了5M以后开始限速
limit_rate 512k;         ####速度限制为512K

         index
    index.html;

         charset utf-8;

        
location ~ /.flv {

             flv;

         }

        location ~ /.mp4$ {
mp4;
}

         error_page
    500 502 503 504
   /50x.html;

         location = /50x.html {

             root
    html;

         }

 

}

}

 

4
)、基本上已经设置完毕,但是此时我们测试的时候还需要一个支持拖拽播放的
flash
播放器,开源的
JW Player
就可以实现这样的功能,我将编译的播放器上传上来,供大家下载:

       
下载链接: 链接地址

       
下载播放器后,上传到上面设置的
/usr/local/nginx/html/flv_file/
目录下,闭关把
flv
视频文件也放到该目录下!

 

5
)、启动
nginx
后测试:

        链接地址

       
      说明:  #
我的
ip

192.168.1.105

       
                 #player.swf
是我的
JW Player
播放器

       
                 #http
是表示居于
http
分发方式

       
                 #test1.flv
是我的
flv
视频文件

给TA打赏
共{{data.count}}人
人已打赏
安全运维

WordPress网站专用docker容器环境带Waf

2020-7-18 20:04:44

安全运维

运维安全-Gitlab管理员权限安全思考

2021-9-19 9:16:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索