Upload
volegg
View
159
Download
0
Embed Size (px)
Citation preview
HLS за часВоскович Олег
skype: olegg.smilehttps://www.facebook.com/volegghttps://www.linkedin.com/profile/view?id=120162299
О чем это я?
1. HLS2. NGINX3. FFMPEG4. DEVICES5. RTMP6. MAKE INSTALL
30 слайдов
Репозиторий:https://github.com/volegg/php-group-hls-for-the-hour
Вопросы после доклада
Мобильники поставить на беззвучный режим
А ты вырубил мобилу?
Просьба
HLS
NGINXnginx [engine x] — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP прокси-сервер общего назначения, изначально написанный Игорем Сысоевым.
http://nginx.org/ru/http://nginx.org/download/nginx-1.9.3.tar.gz
FFMPEGA complete, cross-platform solution to record, convert and stream audio and video.
https://www.ffmpeg.org/
iOS DEVICES
ANDROID DEVICES
RTMPReal Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server.
Nginx RTMP moduleRTMP directives
MAKE && INSTALL
arut/nginx-rtmp-moduleHow to set up your own private RTMP server using nginxRTMPСервер онлайн-вещаний на базе nginx
x264 FFmpeg Options Guideh.264 Advanced GuideFFMPEG wiki:Capture/WebcamFFMPEG wiki:Encode/H.264
HTTP Live StreamingThe Definitive Guide to HLSANDROID Supported Media FormatsThe Current State of Android and Video
Ссылкиperusio/nginx-auth-request-moduleМодуль ngx_http_auth_request_module
ffserver DocumentationFluent ffmpeg-API for node.jsMotion GalleryMPEG-DASH VS. APPLE HLS VS. MICROSOFT SMOOTH STREAMING VS. ADOBE HDSHLS против RTMP — сухая статистикаОнлайн вещание через Nginx-RTMP: несколько готовых рецептов
СпасибоВоскович Олег
skype: olegg.smilehttps://www.facebook.com/volegghttps://www.linkedin.com/profile/view?id=120162299
Let’s mortal kombat beginsudo apt-get update
sudo apt-get upgrade
sudo apt-get -y --force-yes install build-essential git libpcre++-dev libssl-dev autoconf automake libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev libx264-dev libmp3lame-dev unzip libopus-dev cmake mercurial
sudo apt-add-repository ppa:mc3man/trusty-mediasudo apt-get updatesudo apt-get install ffmpeg gstreamer0.10-ffmpeg
Compile nginxmkdir -p ~/hlscd ~/hlscurl -O http://nginx.org/download/nginx-1.9.3.tar.gzgit clone [email protected]:arut/nginx-rtmp-module.gittar -xvf nginx-1.9.3.tar.gzcd nginx-1.9.3/sudo ./configure --add-module=/home/olegg/hls/nginx-rtmp-modulesudo makesudo make install
sudo ln -s /usr/local/nginx/sbin/nginx /bin/nginxnginx -vsudo nginx
Они работают, чтобы ты мог сделать “MAKE INSTALL”
Nginx RTMP configsudo vim /usr/local/nginx/conf/nginx.conf
rtmp_auto_push on;rtmp_auto_push_reconnect 16s;rtmp { chunk_size 4000; server { listen 1935; }}
Nginx RTMP applicationДобавляем application в server
application stream { live on; allow publish all; allow play all;}
sudo nginx -s reload
FFMpeg startffmpeg -f avfoundation -video_device_index 0 \ -i "default" -c:v libx264 -an \-f flv rtmp://10.168.1.44/stream/live
ffmpeg -f avfoundation -video_device_index 1 \-i "default" -c:v libx264 -an \-f flv rtmp://10.168.1.44/stream/live
ffplay rtmp://10.168.1.44/stream/live
Test RTMP streaming <html><head>
<title>Test Video</title><script src="player.js"></script>
</head><body>
<h1>RTMP</h1><div id="playerNMMBvkpyxVUJ"></div><script src="rtmp.js"></script>
</body></html>
Test RTMP streaming var options = { type: 'rtmp', file: 'rtmp://10.168.1.44/stream/live', width: '100%', image: 'cote.jpg', aspectratio: '4:3', autostart: 'true'};
jwplayer('playerNMMBvkpyxVUJ').setup(options);
crossdomain.xml<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy>
<allow-access-from domain="*" secure="false"/></cross-domain-policy>
Они работают, чтобы ты мог открыть http://10.168.1.43/video.html
WIFI: imaguru-guest:impossiblenothing
Nginx HTTP configmkdir -p /tmp/streamsudo vim /usr/local/nginx/conf/nginx.conf
http { server { listen 80; server_name localhost; }}
Nginx RTMP applicationДобавляем в rtmp application stream
hls on; hls_path /tmp/stream; wait_key on;
Nginx HTTP config locationДобавляем в http server директиву location
location /stream { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; add_header Cache-Control no-cache; expires -1;}
sudo nginx -s reload
FFMpeg start HLSffmpeg -f avfoundation -video_device_index 1 \-i "default" -c:v libx264 -an \-f flv rtmp://10.168.1.44/stream/live
ffplay http://10.168.1.44/stream/live.m3u8
FFMpeg start HLS iOSffmpeg -f avfoundation -video_device_index 1 \-i "default" -pix_fmt yuv420p -r 15 \-probesize 100000 -c:v libx264 -r 15 -g 48 \-profile:v baseline -level:v 3.0 \-preset ultrafast -s 480x360 \-analyzeduration 0 -tune zerolatency -an \-f flv rtmp://10.168.1.44/stream/live
ffplay http://10.168.1.44/stream/live.m3u8
Не удивляйся, они так отдыхают http://10.168.1.43/video.html
FFMpeg start HLS androidffmpeg -f avfoundation -video_device_index 1 \-i "default" -pix_fmt yuv420p -r 15 \-probesize 100000 -c:v libx264 -r 15 -g 48 \-profile:v baseline -level:v 3.0 \-preset ultrafast -s 176x144 \-analyzeduration 0 -tune zerolatency -an \-f flv rtmp://10.168.1.44/stream/live
ffplay http://10.168.1.44/stream/live.m3u8
HLS за часВоскович Олег
Спасибо за вниманиеи повторяйте это дома!
Задавайте вопрсы.