STREAMING SERVER LÀ GÌ

     

Chào phần lớn người, lại là bản thân đây.Không đọc sao dạo này mình bỗng dưng thấy hứng thú với Nginx, ngồi vọc bừa bãi thì bỗng nhiên nghĩ ra chủ đề này, vậy là bắt tay vào có tác dụng một phầm mềm demo nho nhỏ.

Bạn đang xem: Streaming server là gì

Bài viết lúc này mình sẽ kiểm tra về video clip theo yêu mong (VOD), cùng khám phá một vài khái niệm sau nhé!

Video on demand là gì

Video theo yêu mong (VOD) hay music và clip theo yêu ước (AVOD) là hệ thống được cho phép người sử dụng lựa chọn và xem / nghe nội dung đoạn phim hoặc âm thanh khi bọn họ chọn, cụ vì buộc phải xem vào một thời hạn phát sóng gắng thể. Công nghệ IPTV thường được sử dụng để mang đến các video clip theo yêu cầu cho TV và máy tính xách tay cá nhân.

Có thể hiểu qua là họ sẽ setup server vươn lên là một server chứa videos gồm sẵn, bạn có thể phát đoạn phim trong danh sách có sẵn đó.

Ví dụ : Youtube, Netflix, Disney+ ... Là gần như hệ thống cung ứng videos trực tuyến gồm cung cấp đoạn phim on demand. Với trong chạy thử này, họ cũng có thế làm cho kiểu vậy nên nhưng quy mô nhỏ tuổi hơn không ít =))

*

Trước khi vào phần demo thì hãy cùng xem một vài định nghĩa về những giao thức mà họ sẽ sử dụng nhé.

RTMP

RTMP là từ viết tắt của Real time messaging protocol.Giao thức RTMP ban đầu là một giao thức chọn lọc được cải cách và phát triển bởi Macromedia để truyền phát âm thanh, video và dữ liệu qua Internet, thân trình vạc Flash cùng máy chủ. Macromedia hiện thuộc về của Adobe, đã kiến tạo một phiên phiên bản chưa hoàn hảo về điểm sáng kỹ thuật của giao thức để phát hành chủ yếu thức.

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

Kích thước đoạn khoác định là 64 byte cho dữ liệu âm thanh với 128 byte mang lại dữ liệu clip và phần đông các loại dữ liệu khác. Các đoạn từ các luồng khác nhau sau đó hoàn toàn có thể được đan xen và ghép thành một liên kết duy nhất.

Với các khối dữ liệu dài hơn, giao thức cho nên vì thế chỉ mang một tiêu đề một byte cho mỗi đoạn, vì vậy phát sinh khôn xiết ít băng thông. Tuy nhiên, vào thực tế, những mảnh độc thân thường không được xen kẽ. Nỗ lực vào đó, việc xen kẹt và ghép kênh được triển khai ở cấp cho gói, với các gói RTMP trên một số kênh chuyển động khác nhau được xen kẹt để bảo đảm an toàn mỗi kênh đáp ứng nhu cầu băng thông, độ trễ và các yêu cầu chất lượng dịch vụ khác. Các gói xen kẽ trong thời hạn này được xem là không thể phân tách cắt, cũng tương tự không đan xen ở cấp độ mảnh.

Nginx cung cấp cho họ cách 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à do phiên bạn dạng này tất cả tính phí phải trong phạm vi bài viết này mình vẫn cấu hình bằng phương pháp import thêm module cho nginx - nginx-rtmp-module (tác mang https://github.com/arut/)

HLS

HLS là từ viết tắt của HTTP live streaming, HLS là 1 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 bởi táo bị cắn Inc. Là 1 giao thức truyền phát nội dung đa phương tiện đi lại khá phổ biến.

HLS giống với MPEG-DASH ở đoạn nó hoạt động bằng cách chia luồng toàn diện thành một chuỗi những tệp mua xuống dựa trên HTTP, mỗi lần tải xuống sở hữu một đoạn ngắn của một luồng truyền download tổng thể có công dụng không bị ràng buộc.Một danh sách các luồng khả dụng, được mã hóa ở các tốc độ bit không giống nhau, được gửi cho máy client bằng cách sử dụng list phát m3u 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 hai phương pháp:

Sử dụng các cơ chế TLS / SSL tiêu chuẩn chỉnh của ngành. Phiên RTMP cơ phiên bản chỉ dễ dàng và đơn giản được gói phía bên trong phiên TLS / SSL bình thường.Sử dụng RTMPE, xong xuôi phiên RTMP trong lớp mã hóa trọng lượng vơi hơn.

HLS

Dựa trên các giao dịch HTTP tiêu chuẩn, HLS hoàn toàn có thể đi qua ngẫu nhiên tường lửa hoặc máy chủ proxy nào cho phép lưu lượng HTTP tiêu chuẩn, không y như các giao thức dựa vào UDP như RTP.

Điều này cũng có thể chấp nhận được nội dung được cung ứng từ những máy chủ HTTP thường thì và được phân phối trên các mạng bày bán nội dung dựa trên HTTP bao gồm sẵn rộng lớn rãi. Tiêu chuẩn chỉnh cũng bao gồm 1 cơ chế mã hóa tiêu chuẩn chỉnh và cung cấp khóa bảo mật thông tin dựa trên HTTPS, cùng nhau cung ứng một khối hệ thống DRM 1-1 giản. Những phiên bản sau này của giao thức cũng cung ứng khả năng tua cấp tốc và tua lại, tích hợp phụ đề.

Hỗ trợ client

Với giao thức RTMP

RTMP là giao thức base trên TCP, có độ trễ thấp tuy nhiên lại được hỗ trợ không rộng rãi, ước ao phát clip trên web bọn họ phải setup Flash.

Từ khi hãng apple tuyên tía không hỗ trợ flash với tự trở nên tân tiến giao thức riêng thì flash cũng từ kia ít được hỗ trợ 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 truyền thông 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 cung cấp bởi hầu như các nền tảng cũng tương tự ứng dụng hiện nay.

Xem thêm: Tổng Hợp 13 Thảo Dược Tốt Cho Tim Mạch, Các Thảo Dược Tốt Cho Tim Mạch

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)

Ngoài ra mọi người dân có thể bài viết liên quan link wiki để khám phá thêm.

Setup basic

Giới thiệu vậy đủ rồi, bây chừ mình đang trình bày công việc setup nhằm stream đoạn clip on demand thực hiện NGINX.

Lưu ý hệ thống mình sử dụng là vps aws ec2 đang hoạt động ubuntu 16.04. Vì vậy nên toàn bộ setup mình khuyên bảo trong nội dung bài viết này là sử dụng cho ubuntu 16.04.

Các hệ quản lý và điều hành khác sẽ có cách cài đặt khác tuy nhiên mình ko đề cập đến trong bài bác này nhé.

Install ffmpeg

sudo add-apt-repository ppa:jonathonf/ffmpeg-4sudo apt-get updatesudo apt-get install ffmpegInstall nginxNhư đã nói ở trong phần đầu bài bác viết, bản thân sẽ thực hiện module không tính phí của người sáng tác Roman Arutyunyan.Và module này sẽ phải setup lúc download nginx nên chúng ta không áp dụng apt-get để cài đặt.

sudo 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à setup module nginx-rtmp-module:

wget https://github.com/arut/nginx-rtmp-module/archive/master.zipunzip master.zipCần lấy băng thông đến folder nginx-rtmp-module vừa giải nén.

Ở phía trên thư mục bản thân giải nén tệp tin zip ra là /home/uytv2/Downloads/nginx-rtmp-module-master chính vì như vậy mình đ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" sudo makesudo make installCheck nginx version

sudo nginx -VSửa config sau để hoàn toàn có thể sử dụng nginx bằng lệnh systemctl

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

Description=A high performance web server và a reverse proxy serverAfter=network.targetType=forkingPIDFile=/run/nginx.pidExecStartPre=/usr/sbin/nginx -t -q -g "daemon 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-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pidTimeoutStopSec=5KillMode=mixedWantedBy=multi-user.targetBấm Ctrl + X, gõ y nhằm lưu lại

sudo nano /etc/ufw/applications.d/nginxDán đoạn text sau cùng lưu lai:

title=Web server (Nginx, HTTP)description=Small, but very powerful and efficient website serverports=80/tcptitle=Web vps (Nginx, HTTPS)description=Small, but very powerful & efficient website serverports=443/tcptitle=Web vps (Nginx, HTTP + HTTPS)description=Small, but very powerful & efficient website serverports=80,443/tcpXong bước thiết lập module nginx-rtmp-module. Bây giờ bạn cũng có thể sử dụng block rtmp trong config của nginx.

Setup NGINX RTMP using nginx-rtmp-module

cd /etc/nginxsudo nano nginx.confThêm block rtmp vào thời gian cuối file và Ctrl + x nhằm lưu lại:

nginx.conf :

rtmp vps listen 1935; application myvideos play /home/uytv2/videos; Thư mục /home/uytv2/videos là folder chứa video clip contents. Lựa chọn videos lưu vào đây để có thể stream.Videos rất 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, vì chưng thế bạn cũng có thể khai báo hls tức thì trong block http:

Cần include folder conf.d trong tệp tin /etc/nginx/nginx.conf, và những config không giống mình cũng trở thành để sống đấy.

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

Để có thể phát videos qua hls, bọn họ cần sử dụng ffmpeg convert đoạn phim đó thành những file chơ vơ dưới dạng .ts, với một playlist bên dưới dạng file .m3u8

Ví dụ video gốc là demo.mp4 thì convert thành các file: demo.m3u8, demo0.ts, demo1.ts, demo2.ts ...

ffmpeg -i demo.mp4 -profile:v baseline -level 3.0 -s 720x400 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls /home/uytv2/videos/hls/demo.m3u8Trong kiểm tra thư mục chứa videos playlist .m3u8 của bản thân mình là /home/uytv2/videos/hls, các bạn cần đổi đường truyền cho phù hợp nhé.

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

Ở tệp tin này hãy suy nghĩ block types: với alias.Block types khai báo mimes type cho các videos phát qua hls.Phần server_name thì cần đưa tên miền name vào. Nếu như server của doanh nghiệp không cần làm chủ domains thì có thể để là gì rồi cũng được.

Còn alias khai báo thư mục cất videos playlist bọn họ vừa convert xong.

server listen 80; root /var/www/html; server_name videos.uytran.cf; location /hls # CORS cài đặ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.apple.mpegurl m3u8; video/mp2t ts; add_header Cache-Control no-cache; alias /home/uytv2/videos/hls; Link playlist clip của mình hiện giờ sẽ là:

http://videos.uytran.cf/hls/demo.m3u8update:

http://videos.uytran.tk/hls/video_1.m3u8Chúng chỉ việc trỏ liên kết đến link playlist này là được.

Như vậy là xong setup cho nginx. Hãy restart nginx để update thiết lập mới là chấm dứt

*

sudo systemctl restart nginx

Demo

Với RTMP:Như list những ứng dụng hỗ trợ hai giao thức này mình có đề cập tại vị trí đầu bài viết. Vì giao thức rtmp hiện không thể được tư vấn rộng rãi.Việc thiết lập flash player bên trên web cũng rất vất vả nên mình sẽ dùng ứng dụng vlc truyền thông media player để phát đoạn clip nhé.

Ở cửa sổ vlc, chọn media -> open network stream và dán link videos vào là xong.

Xem thêm: Hướng Dẫn Cho Trẻ Sơ Sinh Ăn Đúng Cách Cho Trẻ Sơ Sinh Bú Đúng Cách Nhất

rtmp://uytran.cf/myvideos/demo.mp4Với HLS bọn họ có các lựa lựa chọn hơn. Hls được cung ứng bởi trình vạc vlc, vừa được cung ứng bời các lib player js trên web.Với hls thì mình sẽ thực hiện jwplayer bên trên web để phát videos.

http://videos.uytran.cf/hls/demo.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 đã sẵn sàng một video của Hoàng Thùy Linh để demo, mời mọi tín đồ vào xem nhé

*

Update: - https://user.uytran.tk/

Vậy là xong xuôi phần demo, mong muốn qua bài viết mọi người dân có thể cài đặt được một server như mong muốn muốn. Thanks for reading!