Chào đa số bạn, lại là bản thân phía trên. Không gọi sao đi dạo này mình bất chợt thấy hứng trúc cùng với Nginx, ngồi vọc lung tung thì bỗng dưng nghĩ về ra chủ thể này, vậy là hợp tác vào làm cho một tiện ích test nho nhỏ dại.

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

Bài viết từ bây giờ mình đang test về video clip theo từng trải (VOD), thuộc tìm hiểu một vài tư tưởng sau nhé!

Video on dem& là gì

Video theo đề xuất (VOD) tốt âm tkhô cứng với đoạn Clip theo thưởng thức (AVOD) là khối hệ thống có thể chấp nhận được người dùng chắt lọc cùng xem / nghe văn bản đoạn Clip hoặc âm tkhô nóng Lúc họ lựa chọn, thế vì đề nghị coi vào một thời hạn vạc sóng cụ thể. Công nghệ IPTV thường được áp dụng để đem đến các đoạn phim theo thử khám phá cho TV và máy tính cá nhân.

cũng có thể đọc qua là bọn họ vẫn thiết đặt hệ thống biến một VPS cất videos tất cả sẵn, bạn có thể phát đoạn phim trong list có sẵn đó.

lấy ví dụ như : Youtube, Netflix, Disney+ ... là phần đông khối hệ thống cung ứng videos trực tuyến đường gồm hỗ trợ video on demand. Và trong thử nghiệm này, chúng ta cũng có cố gắng làm loại điều này dẫu vậy đồ sộ nhỏ tuổi rộng tương đối nhiều =))

*

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

RTMP

RTMP là tự viết tắt của Real time messaging protocol. Giao thức RTMPhường ban đầu là 1 giao thức độc quyền được cách tân và phát triển vày Macrotruyền thông media nhằm truyền phát âm tkhô giòn, Clip và dữ liệu qua Internet, thân trình phân phát Flash và máy chủ. Macromedia hiện nay thuộc sở hữu của Adobe, đã kiến tạo một phiên bạn dạng chưa hoàn hảo về Điểm sáng chuyên môn của giao thức nhằm xây dựng xác nhận.

RTMP là 1 giao thức dựa trên TCPhường., gia hạn các kết nối thường xuyên và chất nhận được tiếp xúc với độ trễ tốt. Để phân păn năn luồng một cách trót lọt tru với truyền càng những báo cáo càng giỏi, nó phân chia luồng thành những đoạn (fragments) cùng form size của chúng được thỏa thuận hợp tác tùy theo thỏa thuận hợp tác giữa trang bị khách cùng máy chủ. thường thì, kích thước này được giữ nguyên.

Kích thước đoạn khoác định là 64 byte cho tài liệu âm tkhô hanh với 128 byte đến dữ liệu video và phần nhiều những loại dữ liệu không giống. Các đoạn tự các luồng không giống nhau sau đó hoàn toàn có thể được xen kẽ và ghnghiền thành một kết nối độc nhất vô nhị.

Với những khối dữ liệu dài hơn nữa, giao thức cho nên chỉ mang trong mình 1 tiêu đề một byte cho mỗi đoạn, do đó tạo ra rất ít đường truyền. Tuy nhiên, trong thực tiễn, những mhình họa lẻ loi hay ko được xen kẽ. Thay vào kia, Việc xen kẹt với ghnghiền kênh được tiến hành sinh sống cấp gói, cùng với những gói RTMP bên trên một vài kênh chuyển động không giống nhau được xen kẽ nhằm đảm bảo an toàn mỗi kênh đáp ứng nhu cầu đường truyền, độ trễ cùng những thử khám phá chất lượng hình thức khác. Các gói xen kẹt trong thời hạn này được xem như là quan yếu chia cắt, cũng như ko đan xen ở Lever mhình ảnh.

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

HLS

HLS là từ bỏ viết tắt của HTTP live streaming, HLS là 1 trong HTTP-based adaptive sầu bitrate streaming, một giao thức truyền bitrate dựa trên HTTP. HLS được thiết kế vày Apple Inc. Là một giao thức truyền phạt ngôn từ đa phương tiện đi lại tương đối phổ biến.

HLS giống cùng với MPEG-DASH ở trong phần nó chuyển động bằng cách phân tách luồng tổng thể thành một chuỗi các tệp thiết lập xuống dựa trên HTTP, các lần cài đặt xuống mua một quãng ngắn của một luồng truyền download toàn diện và tổng thể có công dụng không xẩy ra ràng buộc. Một list những luồng khả dụng, được mã hóa ngơi nghỉ các tốc độ bit khác biệt, được gửi mang lại sản phẩm công nghệ client bằng phương pháp áp dụng list phân phát m3u mở rộng.

Mã hóa

RTMP

Các phiên RTMP.. hoàn toàn có thể được mã hóa bởi 1 trong nhị pmùi hương pháp:

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

HLS

Dựa trên các giao dịch HTTPhường tiêu chuẩn, HLS có thể đi qua bất kỳ tường lửa hoặc sever proxy như thế nào cho phép lưu lượng HTTP tiêu chuẩn chỉnh, ko hệt như những giao thức dựa trên UDP.. như RTP.

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

Hỗ trợ client

Với giao thức RTMP

RTMPhường. là giao thức base trên TCPhường, gồm độ trễ rẻ tuy vậy lại được cung ứng không thoáng rộng, ao ước vạc video clip trên website bọn họ bắt buộc setup Flash.

Từ Lúc Apple tuyên ổn cha ko cung cấp flash và tự trở nên tân tiến giao thức riêng biệt thì flash cũng từ đó không nhiều được cung ứng rộng.

*

Adobe Flash Player (website 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

Nguồn: https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol

Với giao thức HLS

HLS được hỗ trợ vị phần nhiều những nền tảng cũng giống như ứng dụng hiện giờ.

Mặc định, HLS được hỗ trợ phạt với:

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

Trong khi đều bạn rất có thể tìm hiểu thêm links wiki nhằm tham khảo thêm.

Nguồn: https://en.wikipedia.org/wiki/HTTP_Live_Streaming

Setup basic

Giới thiệu vậy đầy đủ rồi, hiện nay bản thân đang trình bày các bước thiết lập để stream video clip on demvà áp dụng NGINX.

Lưu ý hệ thống bản thân áp dụng là hệ thống aws ec2 đang chạy ubuntu 16.04. Vì thế nên cục bộ thiết đặt bản thân giải đáp vào nội dung bài viết này là thực hiện đến ubuntu 16.04.

Xem thêm: Insufficient Là Gì - Insufficient In Vietnamese

Các hệ điều hành không giống sẽ có được giải pháp setup khác dẫu vậy mình ko đề cập tới trong bài xích này nhé.

Install ffmpeg sudo add-apt-repository ppa:jonathonf/ffmpeg-4 sudo apt-get update sudo apt-get install ffmpeg Install nginx

Nlỗi đang nói ở trong phần đầu bài viết, bản thân vẫn thực hiện module miễn phí của người sáng tác Roman Arutyunyan. Và module này vẫn nên cài đặt cơ hội mua nginx phải họ không sử dụng apt-get nhằm setup.

sudo apt install build-essential -y wget http://nginx.org/download/nginx-1.14.2.tar.gz tar zxvf nginx-1.14.2.tar.gz wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz tar xzvf pcre-8.40.tar.gz wget http://www.zlib.net/zlib-1.2.11.tar.gz tar xzvf zlib-1.2.11.tar.gz wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz tar xzvf openssl-1.1.0f.tar.gz

Tải và thiết đặt module nginx-rtmp-module:

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip unzip master.zip

Cần đem đường dẫn mang lại thỏng mục nginx-rtmp-module vừa bung file.

Ở đây thỏng mục mình giải nén file zip ra là /home/uytv2/Downloads/nginx-rtmp-module-master chính vì vậy mình vẫn để option nhỏng 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 toàn thân --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 make sudo make install

Cheông chồng nginx version

sudo nginx -V

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

suvị nano /etc/systemd/system/nginx.service

Dán thông số kỹ thuật sau vào:

Description=A high performance website server & a reverse proxy hệ thống After=network.target Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g "daetháng on; master_process on;" ExecStart=/usr/sbin/nginx -g "daetháng on; master_process on;" ExecReload=/usr/sbin/nginx -g "daetháng on; master_process on;" -s reload ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid TimeoutStopSec=5 KillMode=mixed WantedBy=multi-user.target

Bấm Ctrl + X, gõ y để giữ lại

sudo nano /etc/ufw/applications.d/nginx

Dán đoạn text sau với lưu lai:

title=Web Server (Nginx, HTTP) description=Small, but very powerful và efficient web VPS ports=80/tcp title=Web Server (Nginx, HTTPS) description=Small, but very powerful and efficient web VPS ports=443/tcp title=Web Server (Nginx, HTTPhường + HTTPS) description=Small, but very powerful & efficient web server ports=80,443/tcp

Xong bước thiết đặt module nginx-rtmp-module. Bây giờ chúng ta cũng có thể thực hiện bloông xã rtmp trong config của nginx.

Setup NGINX RTMP using nginx-rtmp-module

cd /etc/nginx sudo nano nginx.conf

Thêm bloông xã rtmp vào thời điểm cuối tệp tin và Ctrl + x để lưu giữ lại:

nginx.conf :

rtmp } }

Thỏng mục /home/uytv2/videos là thỏng mục đựng Clip contents. Chọn videos lưu vào đó nhằm hoàn toàn có thể stream. Videos hoàn toàn có thể vạc trực tiếp qua giao thức rtmp

rtmp:///myvideos/

Setup NGINX HLS

HLS base bên trên giao thức http, vì thế bạn có thể khai báo hls ngay lập tức trong block http:

Cần include thư mục conf.d trong tệp tin /etc/nginx/nginx.conf, và những config khác mình cũng biến thành để tại đấy.

http

Lưu ý:

Để hoàn toàn có thể phát videos qua hls, chúng ta bắt buộc dùng ffmpeg convert đoạn phim kia thành các tệp tin trơ thổ địa bên dưới dạng .ts, và một playlist bên dưới dạng tệp tin .m3u8

Ví dụ đoạn Clip nơi bắt đầu là test.mp4 thì convert thành những file: test.m3u8, demo0.ts, demo1.ts, demo2.ts ...

ffmpeg -i chạy thử.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/thử nghiệm.m3u8

Trong kiểm tra thư mục đựng videos playlist .m3u8 của chính mình là /home/uytv2/videos/hls, chúng ta yêu cầu đổi đường truyền đến cân xứng nhé.

Sample tệp tin /etc/nginx/conf.d/hls.conf

Tại file này hãy quyên tâm mang đến bloông xã types: types add_header Cache-Control no-cache; alias /home/uytv2/videos/hls; } }

Link playlist video clip của bản thân mình bây chừ vẫn là:

http://videos.uytran.cf/hls/chạy thử.m3u8

Chúng chỉ việc trỏ links đến link playlist này là được.

Như vậy là xong xuôi thiết lập mang lại nginx. Hãy restart nginx nhằm update thiết đặt new là xong

*

sudo systemctl restart nginx

Demo

Với RTMP: Nlỗi list các vận dụng hỗ trợ nhị giao thức này bản thân gồm nhắc ở trong phần đầu bài viết. Vì giao thức rtmp hiện tại không còn được tư vấn rộng rãi.

Việc thiết đặt flash player trên web cũng khá vất vả yêu cầu mình đang cần sử dụng phần mềm vlc truyền thông player nhằm phân phát Clip nhé.

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

rtmp://uytran.cf/myvideos/test.mp4 Với HLS họ có rất nhiều gạn lọc hơn. Hls được cung cấp bởi trình phát vlc, vừa mới được hỗ trợ bời các lib player js trên web.

Với hls thì bản thân sẽ sử dụng jwplayer trên website để phân phát videos.

http://videos.uytran.cf/hls/thử nghiệm.m3u8 <script src="https://cdn.jwplayer.com/libraries/<- your_jwplayer_key ->.js">script> <div id="myPlayer">This text will be replaced with a player.

Xem thêm: Aminoplasmal B Braun Là Gì, Dịch Truyền Tĩnh Mạch Natricorid 0

div> <script> jwplayer("myPlayer").setup(); script>

Mình vẫn sẵn sàng một Clip của Hoàng Thùy Linc để demo, mời mọi fan vào xem nhé

*

http://railsapp.uytran.cf/ Hoặc http://user.railsapp.uytran.cf/videos

Vậy là chấm dứt phần chạy thử, hi vọng qua bài viết số đông người có thể thiết đặt được một server may mắn muốn. Thanks for reading!



Chuyên mục: Blog