출처: //http://blog.chedushi.com/archives/6532?utm_source=tuicoolNginx를 사용하여 http 및 rtmp 프로토콜로 스트리밍 미디어 서버 구축 실험 목적: Nginx가 flv 및 mp4 형식 파일을 지원하고 동시에 rtmp의 hls 기능을 지원하도록 합니다. 정보: HTTP 라이브 스트리밍(약칭 HLS)은 Apple에서 제안한 HTTP 기반 스트리밍 미디어 네트워크 전송 프로토콜입니다. HLS는 기본 HTTP 메시지만 요청합니다. 실시간 전송 프로토콜(RTP)과 달리 HLS는 HTTP 데이터 전달을 허용하는 모든 방화벽이나 프록시 서버를 통과할 수 있습니다. 콘텐츠 전송 네트워크를 사용하여 미디어를 스트리밍하는 것도 쉽습니다.ffmpeg를 사용하여 flv, mp4, mp3 및 기타 형식의 변환을 완료합니다(주문형 실험은 당분간 테스트되지 않음) 1. 준비 작업모듈: nginx_mod_h264_streaming(h264 인코딩 비디오 지원) )모듈: http_flv_module 지원 flv 모듈: http_mp4_module 지원 mp4 모듈: nginx-rtmp-module 지원 rtmp //2015-3-5 추가다운로드 주소:http:// h264.code-shop.com /download/nginx_mod_h264_streaming-2.2.7.tar.gzhttp://nginx.orghttps://github.com/arut/nginx-rtmp-module 1. 종속성 패키지 설치:#yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_642. Git 도구 설치: #mkdir 소프트 소스#cd 소프트 소스#wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar .gz #tar xzvf git-latest.tar.gz#cd git-2013-02-04#autoconf#./configure#make && make install # git –version git version 1.8.1.GIT#cd ..3. ffmpeg 및 해당 종속 패키지 설치: ++++++++Yasm++++++++++#wget http://www.tortall .net/projects/yasm/releases/yasm-1.2.0.tar.gz #tar xzvf yasm-1.2.0.tar.gz#cd yasm-1.2.0 #./configure #make#make install#cd ..++++++++x264+++++++++++#git clone git://git.videolan .org/x264 #cd x264#./configure –enable-shared#make#make install#cd ..++++++++ LAME++++++++++#wget http ://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz #tar xzvf lame-3.99.5.tar.gz#cd lame-3.99.5#./configure –enable-nasm#make#make install#cd ..++++++++libogg++++++++++#wget http:/ /downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz #tar xzvf libogg-1.3.0.tar.gz#cd libogg-1.3 .0#. /configure#make#make install#cd ..++++++++libvorbis++++++++++#wget http://downloads. xiph.org/releases/vorbis /libvorbis-1.3.3.tar.gz #tar xzvf libvorbis-1.3.3.tar.gz#cd libvorbis-1.3.3#./configure#make #make install#cd ..++++++++libvpx++++++++++++#git clone http://git.chromium.org/webm/libvpx.git #cd libvpx#./configure –enable-shared#make#make install#cd ..++++++++FAAD2+++++++++++ #wget http://downloads .sourceforge.net/project/faac/faad2-src/faad2-2.7/faad2-2.7.tar.gz #tar zxvf faad2-2.7.tar.gz#cd faad2 -2.7#. /configure#make#make install#cd ..++++++++FAAC++++++++++#wget http://downloads. sourceforge.net/project/faac /faac-src/faac-1.28/faac-1.28.tar.gz #tar zxvf faac-1.28.tar.gz#cd faac-1.28#./ 구성#make#make 설치#cd ..++++++++Xvid++++++++++++#wget http://downloads.xvid.org/downloads/xvidcore- 1.3.2.tar.gz #tar zxvf xvidcore-1.3.2.tar.gz#cd xvidcore/build/generic#./configure#make#make install cd ..#git clone git://source.ffmpeg.org/ffmpeg #cd ffmpeg#./configure –prefix=/opt/ffmpeg/ –enable-version3 –enable -libvpx –enable-libfaac – 활성화-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid –enable-shared –enable-gpl –enable-postproc –enable-nonfree –enable-avfilter –enable-pthreads# make && make install #cd ../etc/ld.so.conf를 다음과 같이 수정합니다.include ld.so.conf.d/*.conf/lib/ lib64/usr/lib /usr/lib64/usr/local/lib/usr/local/lib64/opt/ffmpeg/lib#ldconfig 2. Nginx 관련 모듈 설치#tar zxvf nginx_mod_h264_streaming-2.2.7.tar.gz#git clone git://github.com/arut/nginx-rtmp-module.git#tar zxvf pcre-8.12.tar.gz#cd pcre-8.12#./configure#make && make install#tar zxvf nginx-1.2.6.tar.gz#cd nginx-1.2.6 #./configure –prefix=/usr/local/nginx –add-module=../nginx_mod_h264_streaming-2.2.7 –with-http_flv_module –with-http_gzip_static_module –with-http_stub_status_module –with-http_mp4_module –추가 모듈=../ nginx-rtmp-모듈 –추가 모듈=../nginx-rtmp-module/hls –with-cc-opt=-I/opt/ffmpeg/include –with-ld-opt=’-L/opt/ffmpeg/lib -Wl,-rpath=/opt/ffmpeg/lib’#make && make install3. nginx 기본 구성 파일을 수정하고 가상 호스트를 구성합니다(여기서는 지금은 주문형으로만 구성하고 테스트합니다. 라이브 방송의 참조 주소를 참조하세요):usernonobody;worker_processes 4;error_log logs/nginx_error.log info;pid logs/nginx.pid;worker_rlimit_nofile 51200;events{use epoll;worker_connections 51200;}#rtmp_auto_push on;rtmp {server {listen 1935;application vod {play /opt/media/nginxrtmp/flv;}}}http{include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 50m ;limit_conn_zone $binary_remote_addr zone=perip:256k;limit_conn_log_level notice;sendfile on;tcp_nopush on;keepalive_timeout 6000;#测试并发临时调大tcp_nodelay on;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;#log formatlog_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘‘$status $body_bytes_sent “$http_referer” ‘‘”$http_user_agent” $http_x_forwarded_for’;#支持flvserver{listen 8081;server_name 192.168.0.33;root /opt/pub/media/nginx; #http协议时候,flv视频位置location ~ .*.(flv|swf|mp4|wma|wmv)$ {valid_referers none blocked *.xxxx.com http://localhost;if ($invalid_referer) {return 403;}}location ~ \.flv$ {flv;limit_conn one 20;#限制客户端并发连接数limit_rate 200k;#限制每客户端最大带宽}location ~ \.mp4$ {flv;limit_conn one 20;limit_rate 200k;}access_log logs/nginxflv_access.log main;}server{listen 8082;server_name 192.168.0.33;index index.html;location / {root /opt/pub/media/nginx-rtmp;}access_log logs/nginxrtmpflv_access.log main;}server {listen 8080;location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {root /opt/pub/soft/nginx-rtmp-module;}location / {root /opt/pub/soft/nginx-rtmp-module/test/rtmp-publisher;}}http://192.168.0.33:8080/stats 查看rtmp客户请求信息http://192.168.0.33:8081/index.html 查看nginx http协议时候的flv视频http://192.168.0.33:8082/index.html 查看nginx rtmp协议时候的flv视频四、基本功能测试:播放器采用开源播放器jwplayer,将播放器放到index.html同级目录下NGINX-Http测试页面index.html(切记http的时候需要给视频添加关键帧)test of nginx-http<객체 ID=”FlashID” 클래스 ID=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ 너비=”480″ 높이=”360″> ndex.cgi?P1_Prod_Version=ShockwaveFlash” flashvars=”type=http&file=http://192.168.0.33:8081/2.flv&autostart=true” wmode=”opaque” /> ;NGINX-RTMP测试页faceindex.htmlnginx-rtmpndex.cgi?P1_Prod_Version=ShockwaveFlash” flashvars=”streamer=rtmp://192.168.0.33:1935/vod&file=2.flv&autostart=true” wmode=”opaque” />页face能打开正常播放就说明配置是正确的.5、并发测试NGINX-HTTP采용 loadrunner测试(略)NGINX-RTMP용 开源软件flazr测试:前提需要安装jdk软件클라이언트 .bat rtmp://192.168.0.33:1935/vod/2.flv -load 500这里的500是并发数由于局域网的限由宽测试到一大小的时候就上不去了,故此步截图不忽略。 以上就介绍了【转载】利用Nginx搭建http와rtmp协议的流媒体服务器,包括了方箹,希望对PHP教程有兴趣的朋友有所帮助。