diff --git a/src/nginx-mainline-rtmp/.SRCINFO b/src/nginx-mainline-rtmp/.SRCINFO new file mode 100644 index 0000000..d9eed2b --- /dev/null +++ b/src/nginx-mainline-rtmp/.SRCINFO @@ -0,0 +1,46 @@ +pkgbase = nginx-mainline-rtmp + pkgdesc = Lightweight HTTP server and IMAP/POP3 proxy server, mainline-rtmp release + pkgver = 1.11.8 + pkgrel = 1 + url = https://nginx.org + install = nginx.install + arch = i686 + arch = x86_64 + arch = armv7h + license = custom + makedepends = hardening-wrapper + depends = pcre + depends = zlib + depends = openssl + depends = geoip + provides = nginx + conflicts = nginx + backup = etc/nginx/fastcgi.conf + backup = etc/nginx/fastcgi_params + backup = etc/nginx/koi-win + backup = etc/nginx/koi-utf + backup = etc/nginx/mime.types + backup = etc/nginx/nginx.conf + backup = etc/nginx/scgi_params + backup = etc/nginx/uwsgi_params + backup = etc/nginx/win-utf + backup = etc/logrotate.d/nginx + backup = usr/share/nginx/html/crossdomain.xml + source = https://nginx.org/download/nginx-1.11.8.tar.gz + source = https://nginx.org/download/nginx-1.11.8.tar.gz.asc + source = https://github.com/arut/nginx-rtmp-module/archive/v1.1.10.tar.gz + source = service + source = logrotate + source = crossdomain.xml + source = nginx.conf + validpgpkeys = B0F4253373F8F6F510D42178520A9993A1C052F8 + md5sums = 8f68f49b6db510e567bba9e0c271a3ac + md5sums = SKIP + md5sums = 2e82501ed423a901ab64bfe2228a0666 + md5sums = ce9a06bcaf66ec4a3c4eb59b636e0dfd + md5sums = d6a6d4d819f03a675bacdfabd25aa37e + md5sums = 4d2e9c834fa2e60cd8b23185b93d2e2e + md5sums = 35a9c62e780ab952fb89b613f0af97cd + +pkgname = nginx-mainline-rtmp + diff --git a/src/nginx-mainline-rtmp/PKGBUILD b/src/nginx-mainline-rtmp/PKGBUILD index 0e042f7..74b3134 100644 --- a/src/nginx-mainline-rtmp/PKGBUILD +++ b/src/nginx-mainline-rtmp/PKGBUILD @@ -2,11 +2,13 @@ # Maintainer: Bartłomiej Piotrowski # Contributor: Sébastien Luttringer # Contributor: Drew DeVault +# Contributor: Florent Thiéry +# Contributor: moparisthebest pkgname=nginx-mainline-rtmp -pkgver=1.11.7 +pkgver=1.11.8 pkgrel=1 -pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server, mainline release' +pkgdesc='Lightweight HTTP server and IMAP/POP3 proxy server, mainline-rtmp release' arch=('i686' 'x86_64' 'armv7h') url='https://nginx.org' license=('custom') @@ -21,20 +23,25 @@ backup=('etc/nginx/fastcgi.conf' 'etc/nginx/scgi_params' 'etc/nginx/uwsgi_params' 'etc/nginx/win-utf' - 'etc/logrotate.d/nginx') + 'etc/logrotate.d/nginx' + 'usr/share/nginx/html/crossdomain.xml') install=nginx.install provides=('nginx') conflicts=('nginx') source=($url/download/nginx-$pkgver.tar.gz{,.asc} https://github.com/arut/nginx-rtmp-module/archive/v1.1.10.tar.gz service - logrotate) + logrotate + crossdomain.xml + nginx.conf) validpgpkeys=('B0F4253373F8F6F510D42178520A9993A1C052F8') # Maxim Dounin -md5sums=('2b4a4874b8fedbd5ba7829579d1f5973' +md5sums=('8f68f49b6db510e567bba9e0c271a3ac' 'SKIP' '2e82501ed423a901ab64bfe2228a0666' 'ce9a06bcaf66ec4a3c4eb59b636e0dfd' - 'd6a6d4d819f03a675bacdfabd25aa37e') + 'd6a6d4d819f03a675bacdfabd25aa37e' + '4d2e9c834fa2e60cd8b23185b93d2e2e' + '35a9c62e780ab952fb89b613f0af97cd') _common_flags=( --with-pcre-jit @@ -112,6 +119,8 @@ package() { install -d "$pkgdir"/usr/share/nginx mv "$pkgdir"/etc/nginx/html/ "$pkgdir"/usr/share/nginx + install -Dm644 ../nginx.conf "$pkgdir"/etc/nginx/nginx.conf + install -Dm644 ../crossdomain.xml "$pkgdir"/usr/share/nginx/html/crossdomain.xml install -Dm644 ../logrotate "$pkgdir"/etc/logrotate.d/nginx install -Dm644 ../service "$pkgdir"/usr/lib/systemd/system/nginx.service install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$provides/LICENSE diff --git a/src/nginx-mainline-rtmp/crossdomain.xml b/src/nginx-mainline-rtmp/crossdomain.xml new file mode 100644 index 0000000..eaf535a --- /dev/null +++ b/src/nginx-mainline-rtmp/crossdomain.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/nginx-mainline-rtmp/nginx.conf b/src/nginx-mainline-rtmp/nginx.conf new file mode 100644 index 0000000..e13d86c --- /dev/null +++ b/src/nginx-mainline-rtmp/nginx.conf @@ -0,0 +1,282 @@ + +#user html; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #gzip on; + + server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + # 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 + types { + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + root /tmp; + add_header Cache-Control no-cache; + add_header Access-Control-Allow-Origin *; + } + + location /dash { + # Serve DASH fragments + root /tmp; + add_header Cache-Control no-cache; + add_header Access-Control-Allow-Origin *; + } + } + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} +} + +rtmp { + server { + # Documentation + # https://github.com/arut/nginx-rtmp-module/wiki/Directives + + listen 1935; + + chunk_size 4000; + + # Video on demand + application vod { + play /var/vod; + } + + # HLS + # Incoming stream must be in H264/AAC. 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 + # + # Example gstreamer pipeline: + # gst-launch-1.0 videotestsrc is-live=true ! timeoverlay ! x264enc + # byte-stream=true tune=zerolatency key-int-max=30 ! + # "video/x-h264, profile=baseline" ! flvmux streamable=true ! + # rtmpsink location=rtmp://localhost:1935/hls/live + # + # Playback url is http://localhost/hls/live.m3u8 + + application hls { + live on; + hls on; + hls_path /tmp/hls; + } + + application dash { + live on; + dash on; + dash_path /tmp/dash; + } + + # 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 32x32. 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 ffmpeg -re -i rtmp://localhost:1935/$app/$name -vcodec flv -acodec copy -s 32x32 + # -f flv rtmp://localhost:1935/small/${name}; + #} + + #application small { + #live on; + # Video with reduced resolution comes here from ffmpeg + #} + + #application webcam { + #live on; + + # Stream from local webcam + #exec_static ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -an + # -f flv rtmp://localhost:1935/webcam/mystream; + #} + + #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; + #} + + #application mystaticpull { + #live on; + + # Static pull is started at nginx start + #pull rtmp://rtmp4.example.com pageUrl=www.example.com/index.html name=mystream static; + #} + + # 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 /tmp/vc; + #record_max_frames 10; + #record_interval 2m; + + # Async notify about an flv recorded + #on_record_done http://localhost:8080/record_done; + + #} + } +}