[HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)(2)
5、 安装nginx及nginx-rtmp-module mkdir~/nginx-source cd~/nginx-source wgethttp://nginx.org/download/nginx-1.2.4.tar.gz tarzxvfnginx-1.2.4.tar.gz wget-Onginx-rtmp-module.ziphttps://github.com/arut/ngi
5、 安装nginx及nginx-rtmp-module
- mkdir ~/nginx-source
- cd ~/nginx-source
- wget http://nginx.org/download/nginx-1.2.4.tar.gz
- tar zxvf nginx-1.2.4.tar.gz
- wget -O nginx-rtmp-module.zip https://github.com/arut/nginx-rtmp-module/archive/master.zip
- unzip nginx-rtmp-module.zip
- wget -O ngx_cache_purge.zip https://github.com/FRiCKLE/ngx_cache_purge/archive/master.zip
- unzip ngx_cache_purge.zip
- cd nginx-1.2.4
- ./configure –user=daemon –group=daemon –prefix=/usr/local/nginx-1.2.4/ –add-module=../nginx-rtmp-module-master –add-module=../nginx-rtmp-module-master/hls –add-module=../ngx_cache_purge-master –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-md5=/usr/lib –with-sha1=/usr/lib –with-http_gzip_static_module
- 在nginx.conf中增加rtmp模块的相关配置,配置例子
- rtmp {
- server {
- listen 1935;
- chunk_size 4000;
- # TV mode: one publisher, many subscribers
- application mytv {
- # enable live streaming
- live on;
- # record first 1K of stream
- record all;
- record_path /tmp/av;
- record_max_size 1K;
- # append current timestamp to each flv
- record_unique on;
- # publish only from localhost
- allow publish 127.0.0.1;
- deny publish all;
- #allow play all;
- }
- # Transcoding (ffmpeg needed)
- application big {
- live on;
- # On every pusblished stream run this command (ffmpeg)
- # with substitutions: $app/${app}, $name/${name} for application & stream name.
- #
- # This ffmpeg call receives stream from this application &
- # reduces the resolution down to 32×32. The stream is the published to
- # ‘small’ application (see below) under the same name.
- #
- # ffmpeg can do anything with the stream like video/audio
- # transcoding, resizing, altering container/codec params etc
- #
- # Multiple exec lines can be specified.
- exec /usr/local/bin/ffmpeg -re -i rtmp://localhost:1935/$app/$name -vcodec flv -acodec copy -s 32×32 -f flv rtmp://localhost:1935/small/${name};
- }
- application small {
- live on;
- # Video with reduced resolution comes here from ffmpeg
- }
- application mypush {
- live on;
- # Every stream published here
- # is automatically pushed to
- # these two machines
- #push rtmp1.example.com;
- #push rtmp2.example.com:1934;
- }
- application mypull {
- live on;
- # Pull all streams from remote machine
- # and play locally
- #pull rtmp://rtmp3.example.com pageUrl=www.example.com/index.html;
- }
- # video on demand
- application vod {
- play /var/flvs;
- }
- application vod2 {
- play /var/mp4s;
- }
- # Many publishers, many subscribers
- # no checks, no recording
- application videochat {
- live on;
- # The following notifications receive all
- # the session variables as well as
- # particular call arguments in HTTP POST
- # request
- # Make HTTP request & use HTTP retcode
- # to decide whether to allow publishing
- # from this connection or not
- on_publish http://localhost:8080/publish;
- # Same with playing
- on_play http://localhost:8080/play;
- # Publish/play end (repeats on disconnect)
- on_done http://localhost:8080/done;
- # All above mentioned notifications receive
- # standard connect() arguments as well as
- # play/publish ones. If any arguments are sent
- # with GET-style syntax to play & publish
- # these are also included.
- # Example URL:
- # rtmp://localhost/myapp/mystream?a=b&c=d
- # record 10 video keyframes (no audio) every 2 minutes
- record keyframes;
- record_path /var/vc;
- record_max_frames 10;
- record_interval 2m;
- # Async notify about an flv recorded
- on_record_done http://localhost:8080/record_done;
- }
- # HLS
- # HLS requires libavformat & should be configured as a separate
- # NGINX module in addition to nginx-rtmp-module:
- # ./configure … –add-module=/path/to/nginx-rtmp-module/hls …
- # For HLS to work please create a directory in tmpfs (/tmp/app here)
- # for the fragments. The directory contents is served via HTTP (see
- # http{} section in config)
- #
- # Incoming stream must be in H264/AAC/MP3. For iPhones use baseline H264
- # profile (see ffmpeg example).
- # This example creates RTMP stream from movie ready for HLS:
- #
- # ffmpeg -loglevel verbose -re -i movie.avi -vcodec libx264
- # -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1
- # -f flv rtmp://localhost:1935/hls/movie
- #
- # If you need to transcode live stream use ‘exec’ feature.
- #
- application hls {
- hls on;
- hls_path /var/app;
- hls_fragment 5s;
- }
- }
- }
- # HTTP can be used for accessing RTMP stats
- http {
- server {
- listen 8080;
- # This URL provides RTMP statistics in XML
- location /stat {
- rtmp_stat all;
- # Use this stylesheet to view XML as web page
- # in browser
- rtmp_stat_stylesheet stat.xsl;
- }
- location /stat.xsl {
- # XML stylesheet to view RTMP stats.
- # Copy stat.xsl wherever you want
- # and put the full directory path here
- root /path/to/stat.xsl/;
- }
- location /hls {
- # Serve HLS fragments
- alias /var/app;
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...