Von //http://blog.chedushi.com/archives/6532?utm_source=tuicool
Verwenden Sie Nginx, um einen Streaming-Medienserver mit den Protokollen http und rtmp zu erstellen.
Zweck des Experiments:
Lassen Sie Nginx Dateien im FLV- und MP4-Format unterstützen und gleichzeitig das Rtmp-Protokoll öffnen
Informationen:
HTTP Live Streaming (abgekürzt HLS) ist ein von Apple vorgeschlagenes HTTP-basiertes Streaming-Media-Netzwerkübertragungsprotokoll.
HLS fordert nur einfache HTTP-Nachrichten an. Im Gegensatz zum Real-Time Transport Protocol (RTP) kann HLS jede Firewall oder jeden Proxyserver passieren, der HTTP-Daten passieren lässt. Es ist auch einfach, ein Content-Delivery-Netzwerk zum Streamen von Medien zu nutzen.
Verwenden Sie ffmpeg, um die Konvertierung von FLV, MP4, MP3 und anderen Formaten abzuschließen (das On-Demand-Experiment wird derzeit nicht getestet)
1. Vorbereitungsarbeiten
Modul: nginx_mod_h264_streaming (unterstützt h264-codierte Videos )
Modul: http_flv_module Support flv
Modul: http_mp4_module Support mp4
Modul: nginx-rtmp-module Support rtmp //2015-3-5 add
Download-Adresse:
http:// h264.code-shop.com /download/nginx_mod_h264_streaming-2.2.7.tar.gz
http://nginx.org
https://github.com/arut/nginx-rtmp-module
1. Abhängigkeitspakete installieren:
#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_64
2. Git-Tools installieren:
#mkdir soft-source
#cd soft-source
#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. Installieren Sie ffmpeg und seine abhängigen Pakete:
++++++++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
#./ configure
#make
#make install
#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 – enable-libmp3lame –enable-libvorbis –enable-libx264 –enable-libxvid –enable-shared –enable-gpl –enable-postproc –enable-nonfree –enable-avfilter –enable-pthreads
# make && make install
#cd ..
Ändern Sie /etc/ld.so.conf wie folgt:
include ld.so.conf.d/*.conf
/lib
/ lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/ffmpeg/lib
#ldconfig
2. Installieren Sie Nginx-bezogene Module
#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 –add-module=../ nginx-rtmp-module –add-module=../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 install
3. Ändern Sie die Nginx-Hauptkonfigurationsdatei und konfigurieren Sie den virtuellen Host (hier konfigurieren und testen wir vorerst nur bei Bedarf, bitte sehen Sie sich die Referenzadresse für die Live-Übertragung an):
Benutzer niemand niemand;
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 format
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” $http_x_forwarded_for’;
#支持flv
server
{
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
ndex.cgi?P1_Prod_Version=ShockwaveFlash“ flashvars=“type=http&file=http://192.168.0.33:8081/2.flv&autostart=true“ wmode=“opaq ue“ /> ;NGINX-RTMP测试页面index.html
nginx-rtmp
ndex.cgi?P1_Prod_Version=ShockwaveFlash“ flashvars=“streamer=rtmp://192.168.0.33:1935/vod&file=2.flv&autostart=true“ wmode=“o paque“ />页面能打开正常播放就说明配置是正确的.
五、并发测试
NGINX-HTTP采用loadrunner测试(略)
NGINX-RTMP采用开源软件flazr测试:
前提需要安装jdk软件
Client .bat rtmp://192.168.0.33:1935/vod/2.flv -load 500定大小的时候就上不去了,故此步截图不忽略.
以上就介绍了【转载】利用Nginx搭建http和rtmp协议的流媒体服务器, 包括了方面的内容, 希望对PHP-Version兴趣的朋友有所帮助.