Stream — Trình Phát Cho Giao Thức Rtmp : //? Hướng Dẫn Streaming Media Với Nginx Và Nginx

Streaming Media với Nginx và nginx-rtmp moduleTable of contents3. VOD qua RTMP4. VOD qua HLS5. Cấu hình Live Streaming=============================================================================

Content

1. Về nginx-rtmp module

Nginx-rtmp là module mở rộng, mà kết hợp với Nginx để cho phép xây dựng máy chủ streaming media.

Đang xem: Giao thức rtmp

Một số tính năng mà nginx-rtmp hỗ trợ:

RTMP/HLS/MPEG-DASH live streaming

RTMP Video on demand FLV/MP4, phát từ local file hoặc qua HTTP

Stream relay support for distributed streaming: push & pull models

Ghi streams vào nhiều tệp FLV

Hỗ trợ H264/AAC

Transcode trực tuyến với FFmpeg

HTTP callbacks (publish/play/record/update etc)

Module điều khiển HTTP để recording audio/video and dropping clients

Kỹ thuật buffer tiên tiến để giữ cho bộ nhớ được cấp ở mức thấp nhất mà streaming vẫn nhanh.

Kết hợp được với các ứng dụng như Wirecast, FMS, Wowza, JWPlayer, FlowPlayer, StrobeMediaPlayback, ffmpeg, avconv, rtmpdump, flvstreamer, ..

Thống kê stream với định dạng XML/XSL

Linux/FreeBSD/MacOS/Windows

2. Cài đặt Nginx với module nginx-rtmp

Step1: Download & unpack latest stable nginx & nginx-rtmp version

cd /optsudo git clone git://sentory.vn/arut/nginx-rtmp-module.gitsudo wget http://nginx.org/download/nginx-1.14.1.tar.gzsudo tar xzf nginx-1.14.1.tar.gzmv nginx-1.14.1 nginxStep2: Build nginx với nginx-rtmp

sudo ./configure –prefix=/etc/nginx –pid-path=/var/run/nginx.pid –conf-path=/etc/nginx/nginx.conf –sbin-path=/usr/sbin/nginx –user=nginx –group=nginx –with-file-aio –with-http_ssl_module –add-module=nginx-rtmp-modulesudo makesudo make installStep3: Run Nginx với systemd

Create tệp /lib/systemd/system/nginx.service với nội dung sau:

Description=nginx – high performance web serverDocumentation=http://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.targetType=forkingExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.confExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s QUIT $MAINPIDWantedBy=multi-user.targetStart Nginx servicesystemctl enable nginx.servicesystemctl start nginx.service

3. VOD qua RTMP

Chúng ta sẽ cấu hình để cho phép các video player xem video qua giao thức RTMP.

3.1 Cấu hình Nginx

Step1: Tạo tệp tin cấu hình nginx với nội dung sau:

user nginx;worker_processes 1;pid /run/nginx.pid;user nginx;events { worker_connections 1024;}rtmp { server { listen 1935; chunk_size 4000; # video on demand for mp4 files application vod { play /var/mp4s; } }}http { access_log /var/log/nginx/access-streaming.log; error_log /var/log/nginx/error-streaming.log; server { listen 80; root /var/www/html; # RTMP statistics in XML location /stat { # Copy stat.xsl put to root directory rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } }}Thông tin cấu hình tệp cấu như sau:

Khối rtmp { }

listen port với 1935 (port default)

application với đường dẫn ảo là vod

Đường dẫn thư mục chứa các tệp video để phát là “/var/mp4s”.

Khi đó muốn sử dụng chúng ta truy cập kiểu như “rtmp://192.168.10.113:1935/vod/video-name.mp4”

Step2: Tạo thư mục chứa và copy tệp tin video

mkdir /var/mp4scd /var/mp4sChúng ta download hoặc copy một tin video vào thư mục /var/mp4s

3.2. Sử dụng Video Player để chạy video

Chúng ta có thể sử dụng một trình phát video có hỗ trợ giao thức rtmp để phát.

Xem thêm: ” Hippo Là Gì ? (Từ Điển Anh Nghĩa Của Từ Hippopotamus Trong Tiếng Việt

Ở đây, chúng ta có thể sử dụng VLC player

Mở player VLC → Nhấn Media → Chọn “Open Network Stream ..”. Sau đó vào thông tin đường dẫn tệp video vod với rtmp://192.168.10.113:1935/vod/vod.mp4

*

Cuối cùng nhấn Play để phát video.

*

4. VOD qua HLS

Chúng ta sẽ cấu hình để cho phép video player phát video qua giao thức HLS (Apple HTTP Live Streaming).

4.1 Cài đặt Ffmpeg

Sử dụng script Installing FFmpeg on Linux

Nếu chỉ sử dụng một thư viện có sẵn thì cài đặt đơn giản như sau trên CentOS

yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc

Trong phần Giới thiệu FFmpeg, cũng đã giới thiệu và cách sử dụng cơ bản FFmpeg.

4.2 Convert tệp vod.mp4 sang HLS

Trước khi convert, chúng ta thực hiện copy/download tệp tin video lên server (ví dụ tệp tin là vod.mp4)

Sử dụng lệnh ffmpeg để convert vod.mp4 sang định dạng HLS (Apache HTTP Live Stream)

ffmpeg -i video.mp4 -profile:v baseline -level 3.0 -s 720×400 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls /tmp/index.m3u8

Trong đó:

vod.mp4 là tệp video đầu vào cần convert

index.m3u8 là tệp tin master đầu ra của HLS playlist

và một số tham số tùy chọn cho độ phân giải, thời gian phân đoạn, ..

4.3 Cấu hình nginx

Ở đây, Chúng ta sẽ cấu hình nginx làm web server, đồng thời cấu hình làm media server.

Xem thêm: Cách Nấu Mực Xào Chua Ngọt, Cách Làm Mực Xào Chua Ngọt Thơm Ngon

user nginx;worker_processes 1;error_log logs/rtmp_error.log debug;pid /var/run/nginx.pid;events { worker_connections 1024;}http { #serve the player for HLS server { listen 80; root /var/www/html; server_name localhost; location /hls { # CORS setup add_header “Access-Control-Allow-Origin” “*” always; add_header “Access-Control-Expose-Headers” “Content-Length”; # Allow CORS preflight requests if ($request_method = “OPTIONS”) { add_header “Access-Control-Allow-Origin” “*”; add_header “Access-Control-Max-Age” 1728000; add_header “Content-Type” “text/plain charset=UTF-8”; add_header “Content-Length” 0; return 204; } types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } add_header Cache-Control no-cache; alias /tmp; } }}Listen với port default 80

Playlist của stream là tệp tin m3u8, với các segment là tệp ts

Đường dẫn thư mục chứa các playlist là /tmp

4.4 Phát video trên web browser với videojs

Chúng ta có thể phát video trên web browser, mà sử dụng flash player như Flowplayer hay Jwplayer. Trong trường hợp này, tôi sẽ giới thiệu sử dụng videojs player cho phát video trên web browser.

Link về videojs: https://sentory.vn/videojs/http-streaming

Trên Nginx web server, chúng ta sẽ tạo tệp tin index.html với nội dung sau vào root directory:

Related Articles

Trả lời

Back to top button