Chào các người, lại là mình đây.Không đọc sao dạo bước này mình thốt nhiên thấy hứng thụ với Nginx, ngồi vọc ltinh tinh thì bất chợt nghĩ về ra chủ đề này, vậy là bắt tay vào làm cho một app test nho nhỏ.

Bạn đang xem: Rtmp là gì

Bài viết lúc này mình sẽ demo về video theo những hiểu biết (VOD), cùng mày mò một vài định nghĩa sau nhé!

Video on demand là gì

Video theo trải nghiệm (VOD) hay âm thanh hao và Clip theo kinh nghiệm (AVOD) là hệ thống cho phép người dùng chọn lọc cùng xem / nghe nội dung video hoặc âm thanh hao khi bọn họ lựa chọn, thay vày đề xuất coi vào một trong những thời gian vạc sóng ví dụ. Công nghệ IPTV hay được thực hiện nhằm mang lại các Clip theo đòi hỏi đến TV với máy tính xách tay cá nhân.

cũng có thể hiểu qua là bọn họ đang thiết lập hệ thống đổi mới một server đựng videos có sẵn, chúng ta có thể phạt Clip vào danh sách có sẵn kia.

ví dụ như : Youtube, Netflix, Disney+ ... là đa số khối hệ thống cung cấp videos trực tuyến bao gồm cung cấp video clip on demand. Và vào chạy thử này, bọn họ cũng đều có nỗ lực có tác dụng mẫu mã điều này nhưng mà quy mô nhỏ dại hơn rất nhiều =))

*

Trước Lúc vào phần thử nghiệm thì nên cùng coi một vài quan niệm về các giao thức nhưng chúng ta đã áp dụng nhé.

RTMP

RTMP. là tự viết tắt của Real time messaging protocol.Giao thức RTMP ban sơ là 1 giao thức độc quyền được cách tân và phát triển bởi vì Macrotruyền thông để truyền phạt âm tkhô giòn, video với tài liệu qua Internet, thân trình phạt Flash với máy chủ. Macromedia hiện tại thuộc sở hữu của Adobe, vẫn tạo ra một phiên bạn dạng chưa hoàn chỉnh về điểm lưu ý nghệ thuật của giao thức nhằm thi công phê chuẩn.

RTMP.. là 1 trong những giao thức dựa vào TCP, duy trì những kết nối tiếp tục với được cho phép giao tiếp với độ trễ tốt. Để phân phối luồng một bí quyết trơn tru tru cùng truyền càng nhiều công bố càng giỏi, nó chia luồng thành các đoạn (fragments) với kích thước của bọn chúng được thỏa thuận tùy theo thỏa thuận thân đồ vật khách và máy chủ. thường thì, kích thước này được không thay đổi.

Kích thước đoạn mặc định là 64 byte mang lại tài liệu âm thanh hao với 128 byte đến dữ liệu video và số đông những nhiều loại dữ liệu không giống. Các đoạn tự các luồng khác biệt kế tiếp hoàn toàn có thể được xen kẽ cùng ghép thành một kết nối tốt nhất.

Với những khối hận dữ liệu dài hơn, giao thức cho nên vì thế chỉ mang 1 tiêu đề một byte cho từng đoạn, vì vậy gây ra rất ít băng thông. Tuy nhiên, trong thực tiễn, các mhình ảnh trơ trọi thường không được xen kẹt. Thay vào kia, việc xen kẹt cùng ghép kênh được thực hiện nghỉ ngơi cung cấp gói, với các gói RTMPhường. bên trên một số trong những kênh chuyển động khác nhau được đan xen để bảo đảm an toàn mỗi kênh đáp ứng băng thông, độ trễ cùng các trải nghiệm unique hình thức dịch vụ không giống. Các gói đan xen trong thời hạn này được xem là cần yếu chia giảm, cũng giống như ko đan xen nghỉ ngơi cấp độ mhình họa.

Nginx cung ứng mang đến họ phương thức thông số kỹ thuật rtmp trải qua nginx plus (https://www.nginx.com/products/nginx/modules/rtmp-media-streaming/), với vì phiên bạn dạng này có tính phí tổn cần vào phạm vi nội dung bài viết này bản thân đang thông số kỹ thuật bằng phương pháp import thêm module cho nginx - nginx-rtmp-module (tác giả https://github.com/arut/)

HLS

HLS là tự viết tắt của HTTP.. live sầu streaming, HLS là một trong những HTTP-based adaptive bitrate streaming, một giao thức truyền bitrate dựa vào HTTP. HLS được lập trình do Apple Inc. Là một giao thức truyền phạt ngôn từ đa phương tiện khá phổ biến.

HLS kiểu như với MPEG-DASH ở trong phần nó vận động bằng phương pháp chia luồng tổng thể và toàn diện thành một chuỗi các tệp tải xuống dựa trên HTTP, những lần mua xuống sở hữu một đoạn nthêm của một luồng truyền tải tổng thể có tác dụng không biến thành ràng buộc.Một list các luồng khả dụng, được mã hóa nghỉ ngơi những vận tốc bit khác biệt, được gửi mang lại trang bị client bằng cách thực hiện danh sách phân phát m3u không ngừng mở rộng.

Mã hóa

RTMP

Các phiên RTMP. rất có thể được mã hóa bằng 1 trong những nhị phương thơm pháp:

Sử dụng những hình thức TLS / SSL tiêu chuẩn chỉnh của ngành. Phiên RTMP cơ bản chỉ đơn giản được gói bên trong phiên TLS / SSL thông thường.Sử dụng RTMPE, chấm dứt phiên RTMPhường vào lớp mã hóa trọng lượng nhẹ hơn.

HLS

Dựa bên trên những thanh toán HTTPhường tiêu chuẩn, HLS rất có thể đi qua ngẫu nhiên tường lửa hoặc sever proxy làm sao chất nhận được lưu lại lượng HTTPhường. tiêu chuẩn, ko giống như những giao thức dựa trên UDP nhỏng RTP..

Vấn đề này cũng chất nhận được ngôn từ được cung cấp tự những sever HTTP thông thường cùng được phân păn năn bên trên những mạng phân păn năn câu chữ dựa vào HTTPhường tất cả sẵn rộng thoải mái. Tiêu chuẩn cũng bao gồm một qui định mã hóa tiêu chuẩn chỉnh và phân pân hận khóa bảo mật dựa vào HTTPS, với mọi người trong nhà cung ứng một khối hệ thống DRM đơn giản và dễ dàng. Các phiên bạn dạng sau đây của giao thức cũng hỗ trợ khả năng tua nhanh khô và tua lại, tích phù hợp prúc đề.

Hỗ trợ client

Với giao thức RTMP

RTMPhường. là giao thức base trên TCPhường., tất cả độ trễ phải chăng tuy vậy lại được hỗ trợ không rộng thoải mái, ao ước phạt đoạn phim trên website bọn họ yêu cầu thiết lập Flash.

Từ khi Apple tuyên bố ko hỗ trợ flash và từ bỏ phát triển giao thức riêng biệt thì flash cũng tự đó ít được cung ứng hơn.

*

Adobe Flash Player (web browser plug-in):Windows, OS X, Chrome OS, Linux

Gnash (web browser plug-in/media player):Windows, Linux

VLC media player:Windows, OS X, Linux, iOS, Android

MPC-HC:Windows

XBMC Media Center:Windows, OS X, Linux, iOS (jailbroken), Android

Với giao thức HLS

HLS được hỗ trợ vị phần đông các căn nguyên cũng giống như vận dụng bây chừ.

Xem thêm: “ Social Capital Là Gì ? Định Nghĩa Và Giải Thích Ý Nghĩa Khái Niệm Về Vốn Xã Hội

Mặc định, HLS được cung cấp phạt với:

Windows 10 (Microsoft Edge)macOS 10.6+ (Safari & QuickTime)iOS 3.0+ (Safari)Andoid 4.1+ (Google Chrome)

Bên cạnh đó phần đa người có thể tìm hiểu thêm links wiki nhằm tham khảo thêm.

Setup basic

Giới thiệu vậy đầy đủ rồi, bây chừ bản thân vẫn trình diễn các bước thiết lập nhằm stream video on demand thực hiện NGINX.

Lưu ý hệ thống mình áp dụng là VPS aws ec2 đang làm việc ubuntu 16.04. Vì thế cho nên toàn bộ thiết lập bản thân chỉ dẫn vào bài viết này là sử dụng mang lại ubuntu 16.04.

Các hệ điều hành không giống sẽ có được biện pháp thiết đặt không giống nhưng lại bản thân không đề cập tới vào bài xích này nhé.

Install ffmpeg

suvị add-apt-repository ppa:jonathonf/ffmpeg-4subởi vì apt-get updatesubởi apt-get install ffmpegInstall nginxNlỗi sẽ nói ở phần đầu nội dung bài viết, mình đang áp dụng module free của tác giả Roman Arutyunyan.Và module này đang nên thiết lập thời điểm download nginx bắt buộc họ không thực hiện apt-get nhằm thiết đặt.

subởi apt install build-essential -ywget http://nginx.org/download/nginx-1.14.2.tar.gztar zxvf nginx-1.14.2.tar.gzwget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gztar xzvf pcre-8.40.tar.gzwget http://www.zlib.net/zlib-1.2.11.tar.gztar xzvf zlib-1.2.11.tar.gzwget https://www.openssl.org/source/openssl-1.1.0f.tar.gztar xzvf openssl-1.1.0f.tar.gzTải và thiết lập module nginx-rtmp-module:

wget https://github.com/arut/nginx-rtmp-module/archive/master.zipunzip master.zipCần rước đường truyền mang đến thỏng mục nginx-rtmp-module vừa bung file.

Tại trên đây thư mục bản thân bung file file zip ra là /home/uytv2/Downloads/nginx-rtmp-module-master vì vậy bản thân đang để option như sau:

--add-module="/home/uytv2/Downloads/nginx-rtmp-module-master"cd nginx-1.14.2./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/run/nginx.pid --lock-path=/var/lock/nginx.lock --user=www-data --group=www-data --build=Ubuntu --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-openssl=../openssl-1.1.0f --with-openssl-opt=enable-ec_nistp_64_gcc_128 --with-openssl-opt=no-nextprotoneg --with-openssl-opt=no-weak-ssl-ciphers --with-openssl-opt=no-ssl3 --with-pcre=../pcre-8.40 --with-pcre-jit --with-zlib=../zlib-1.2.11 --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_slice_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_v2_module --with-http_secure_link_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-debug --add-module="/home/uytv2/Downloads/nginx-rtmp-module-master" subởi vì makesuvị make installCheông chồng nginx version

suvì nginx -VSửa config sau để rất có thể áp dụng nginx bởi lệnh systemctl

suvì nano /etc/systemd/system/nginx.serviceDán cấu hình sau vào:

Description=A high performance website hệ thống và a reverse proxy serverAfter=network.targetType=forkingPIDFile=/run/nginx.pidExecStartPre=/usr/sbin/nginx -t -q -g "daetháng on; master_process on;"ExecStart=/usr/sbin/nginx -g "daemon on; master_process on;"ExecReload=/usr/sbin/nginx -g "daemon on; master_process on;" -s reloadExecStop=-/sbin/start-stop-daetháng --quiet --stop --retry QUIT/5 --pidtệp tin /run/nginx.pidTimeoutStopSec=5KillMode=mixedWantedBy=multi-user.targetBấm Ctrl + X, gõ y nhằm lưu lại lại

suvì chưng nano /etc/ufw/applications.d/nginxDán đoạn text sau với lưu giữ lai:

title=Web Server (Nginx, HTTP)description=Small, but very powerful và efficient website serverports=80/tcptitle=Web Server (Nginx, HTTPS)description=Small, but very powerful and efficient web serverports=443/tcptitle=Web Server (Nginx, HTTP + HTTPS)description=Small, but very powerful and efficient web serverports=80,443/tcpXong bước setup module nginx-rtmp-module. Bây tiếng chúng ta cũng có thể thực hiện bloông xã rtmp trong config của nginx.

Setup NGINX RTMPhường using nginx-rtmp-module

cd /etc/nginxsubởi vì nano nginx.confThêm bloông xã rtmp vào cuối tệp tin với Ctrl + x để lưu lại:

nginx.conf :

rtmp server listen 1935; application myvideos play /home/uytv2/videos; Tlỗi mục /home/uytv2/videos là thỏng mục cất video contents. Chọn videos lưu giữ vào chỗ này để hoàn toàn có thể stream.Videos hoàn toàn có thể phạt trực tiếp qua giao thức rtmp

rtmp:///myvideos/

Setup NGINX HLS

HLS base trên giao thức http, chính vì như vậy bạn có thể knhị báo hls ngay lập tức trong blochồng http:

Cần include tlỗi mục conf.d trong file /etc/nginx/nginx.conf, với những config không giống mình cũng trở thành để tại đấy.

http ... include /etc/nginx/conf.d;...Lưu ý:

Để hoàn toàn có thể phát videos qua hls, họ đề xuất cần sử dụng ffmpeg convert video đó thành những tệp tin đơn nhất bên dưới dạng .ts, cùng một playcác mục dưới dạng tệp tin .m3u8

Ví dụ video nơi bắt đầu là thử nghiệm.mp4 thì convert thành những file: kiểm tra.m3u8, demo0.ts, demo1.ts, demo2.ts ...

ffmpeg -i chạy thử.mp4 -profile:v baseline -màn chơi 3.0 -s 720x400 -start_number 0 -hls_time 10 -hls_list_form size 0 -f hls /home/uytv2/videos/hls/demo.m3u8Trong demo tlỗi mục cất videos playdanh mục .m3u8 của chính mình là /home/uytv2/videos/hls, chúng ta nên đổi đường truyền mang lại tương xứng nhé.

Sample file /etc/nginx/conf.d/hls.conf

Tại file này hãy quyên tâm mang đến blochồng types: với alias.Bloông xã types khai báo mimes type cho những videos vạc qua hls.Phần server_name thì nên gửi domain name vào. Nếu server của bạn không phải thống trị domains thì có thể nhằm là gì cũng rất được.

Còn alias knhị báo thỏng mục chứa videos playmenu bọn họ vừa convert chấm dứt.

hệ thống listen 80; root /var/www/html; server_name videos.uytran.cf; location /hls # CORS thiết đặt 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.táo khuyết.mpegurl m3u8; video/mp2t ts; add_header Cache-Control no-cache; alias /home/uytv2/videos/hls; Link playmenu đoạn phim của chính bản thân mình hiện giờ đang là:

http://videos.uytran.cf/hls/chạy thử.m3u8Chúng chỉ cần trỏ links mang đến link playmenu này là được.

do đó là xong xuôi cài đặt mang đến nginx. Hãy restart nginx nhằm update thiết đặt mới là chấm dứt

*

sudo systemctl restart nginx

Demo

Với RTMP:Nlỗi danh sách những vận dụng cung ứng nhị giao thức này bản thân tất cả đề cập tại phần đầu nội dung bài viết. Vì giao thức rtmp hiện tại không hề được support rộng thoải mái.Việc thiết lập flash player trên web cũng khá vất vả đề nghị bản thân vẫn sử dụng phần mềm vlc truyền thông media player để vạc Clip nhé.

Ở hành lang cửa số vlc, chọn Media -> xuất hiện network stream và dán link videos vào là xong xuôi.

rtmp://uytran.cf/myvideos/demo.mp4Với HLS họ có không ít chắt lọc rộng. Hls được cung cấp vày trình phân phát vlc, vừa mới được cung cấp bời các lib player js bên trên website.Với hls thì bản thân sẽ sử dụng jwplayer bên trên web để phát videos.

http://videos.uytran.cf/hls/thử nghiệm.m3u8script src="https://cdn.jwplayer.com/libraries/.js">script>div id="myPlayer">This text will be replaced with a player.div>script> jwplayer("myPlayer").setup( file: "http://videos.uytran.cf/hls/demo.m3u8", height: 360, width: 640 );script>Mình vẫn sẵn sàng một đoạn Clip của Hoàng Thùy Linh nhằm thử nghiệm, mời hầu như fan vào xem nhé

*

Vậy là xong xuôi phần test, mong muốn qua bài viết gần như fan hoàn toàn có thể thiết đặt được một hệ thống suôn sẻ mong mỏi. Thanks for reading!

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *