RTMP là gì? RTMP Server là gì? Cách thiết lập Máy chủ phát video

RTMP là gì? RTMP Server là gì? Thiết lập máy chủ RTMP phát video như thế nào? Tất cả sẽ được LANIT hướng dẫn ngay trong bài viết này nhé!

RTMP là gì?

RTMP viết tắt của Real-Time Messaging Protocol là công nghệ truyền phát video trực tiếp qua Internet. Nó hoạt động dựa trên công nghệ TCP (Transmission Control Protocol) và lúc đầu được Macromedia phát triển cho Flash Player của họ. Hiện nay nó trở thành Adobe Flash Player sau khi công ty được Adobe mua lại.

RTMP là gì? RTMP Server là gì? Cách thiết lập Máy chủ phát video
RTMP là gì?

RTMP hoạt động để chia nhỏ dữ liệu trong các tệp video độ phân giải cao thành các gói nhỏ hơn, giúp dễ dàng quản lý và gửi tệp đi. Với cách này, nó có thể phân phối nội dung video được mã hóa tới các nền tảng phát trực tiếp, mạng xã hội và media servers.

Các biến thể của giao thức RTMP

RTMP có 5 biến thể chính, bao gồm:

  • RTMP: Giao thức dựa trên TCP đơn giản
  • RTMPS: Sử dụng kết nối SSL an toàn để giảm rủi ro phát trực tuyến dựa trên đám mây. Nó phù hợp sử dụng cho các cuộc họp của công ty và tổ chức.
  • RTMPE: Sử dụng mã hóa bảo mật độc quyền của Adobe và lớp mã hóa nhẹ hơn RTMPS.
  • RTMPT: Được đóng gói bằng HTTP để vượt qua tường lửa và lọc lưu lượng truy cập.
  • RTMFP: Sử dụng UDP.

Thành phần chính của RTMP

RTMP được hoạt động dựa trên ba thành phần chính, mỗi thành phần phục vụ cho mục đích trong quá trình phát video trực tiếp:

  • RTMP Server: RTMP Server có vai trò là trung tâm để xử ký các luồng đến và phân phối đi đến các máy khách được kết nối. Nó quản lý luồng dữ liệu đa phương tiện, xử lý xác thực và đảm bảo truyền tải trơn tru giữa máy chủ và máy khách
  • RTMP Client: RTMP Client chịu trách nhiệm nhận các luồng âm thanh và video trực tiếp từ máy chủ và hiển thị chúng cho người xem cuối.
  • RTMP Protocol: RTMP Protocol có vai trò xác định các quy tắc và cơ chế phân phối nội dung đa phương tiện qua mạng. Nó cho phép giao tiếp theo thời gian thực, hỗ trợ truyền phát và tạo điều kiện trao đổi thông báo điều khiển giữa máy chủ và máy khách.

Ưu điểm nổi bật của RTMP

RTMP đem đến một số lợi ích nhất định, góp phần vào sự thành công trong ngành phát trực tiếp hiện nay:

  • Độ trễ thấp: RTMP giúp giảm độ trễ giữ thời điểm ghi hình với lúc hiển thị cho người xem. Khi độ trễ thấp giúp các sự kiện trực tiếp, giúp tương tác theo thời gian thực tối hơn.
  • Truyền phát Bitrate thích ứng: Thông qua RTMP, các đài truyền hình có thể phân phối các luồng trực tiếp ở các mức chất lượng khác nhau, thích ứng với khả năng kết nối mạng và thiết bị người xem. Giúp trải nghiệm người xem liền mạch khi sử dụng ở các điều kiện mạng khác nhau.
  • Tương thích nền tảng rộng: RTMP hỗ trợ bởi nhiều nền tảng khác nhau, cho phép các đài truyền hình tiếp cận một lúc được nhiều người xem.
  • Tính năng tương tác: RTMP hỗ trợ tính năng tương tác bằng cách kích hoạt các tính năng như trò chuyện trực tiếp, thăm dò ý kiến người xem theo thời gian thực và phát lại được đồng bộ hóa. Điều này giúp nâng cao mức độ tương tác với người xem và nâng cao ý thức cộng đồng trong các buổi phát trực tiếp.
RTMP là gì? RTMP Server là gì? Cách thiết lập Máy chủ phát video
Ưu điểm của RTMP là gì?

Hướng dẫn cài đặt Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04

Yêu cầu hệ thống:

  • Một máy chủ Ubuntu 20.04 với user non-root có quyền sudo.
  • Nginx đã được cài đặt từ trước.

Bước 1: Cài đặt và cấu hình Nginx-RTMP

Hiện nay, các công cụ streaming đều hỗ trợ RTMP để xác định các tham số cơ bản của luồng video trên internet. Máy chủ web Nginx bao gồm một module để cung cấp luồng RTMP với cấu hình tối thiểu từ một URL chuyên dụng. Module Nginx RTMP không được thiết lập tự động trong Nginx, nhưng trên Ubuntu 20.04 hay các phiên bản Linux khác, bạn có thể cài đặt dưới dạng package bổ sung.

Để bắt đầu, ta chạy các lệnh sau với tư cách là user non-root để cập nhật danh sách package và cài đặt module Nginx:

sudo apt update
sudo apt install libnginx-mod-rtmp

Lúc này, bạn cần thêm một cấu hình vào file config Nginx để xác định vị trí và cách thức luồng stream sẽ hoạt động. Bạn sử dụng nano hoặc trình soạn thảo văn bản để mở file cấu hình của Nginx /etc/nginx/nginx.conf và thêm lệnh cấu hình sau vào cuối file:

sudo nano /etc/nginx/nginx.conf

. . .
rtmp {
server {
listen 1935;
chunk_size 4096;
allow publish 127.0.0.1;
deny publish all;

application live {
live on;
record off;
}
}
}

Trong đó:

  • listen 1935: Thiết lập RTMP lắng nghe các kết nối trên cổng 1935.
  • chunk_size 4096: Thiết lập RTMP sẽ gửi dữ liệu ở dạng 4KB block.
  • allow publish 127.0.0.1 và deny publish all: Chỉ cho phép xuất bản video từ cùng một máy chủ để tránh người dùng khác có thể push stream của riêng họ.
  • application live: Xác định một block ứng dụng khả dụng tại đường dẫn URL là /live.
  • live on: Bật chế độ trực tiếp để nhiều người có thể kết nối đồng thời với stream của bạn.
  • record off: Tắt chức năng ghi của Nginx-RTMP để tất cả các luồng không lưu riêng vào đĩa theo mặc định.

Lưu và đóng file. Nếu bạn đang dùng nano, nhấn Ctrl + X => Nhấn Y => Nhấn Enter.

Mặc định RTMP sẽ lắng nghe trên port 1935, nên bạn cần mở cổng đó trong firewall của mình. Nếu đã cấu hình ufw, hãy chạy lệnh sau:

sudo ufw allow 1935/tcp

Và lúc này bạn có thể reload Nginx:

sudo systemctl reload nginx.service

Bước 2: Gửi video đến RTMP server

Bạn có thể tải xuống một video bằng cách sử dụng youtube-dl để quay video từ các nền tảng phát trực tuyến khác như Youtube.

Để sử dụng youtube-dl, bạn cần có bản cài đặt Python với phiên bản mới nhất:

sudo apt install python3-pip

Tiếp theo, sử dụng pip để cài đặt youtube-dl:

sudo pip install youtube-dl

Bây giờ bạn có thể dùng youtube-dl để download video từ Youtube.

Để phát trực tuyến, bạn sẽ cần cài đặt ffmpeg:

sudo apt install ffmpeg

Tiếp đến là sử dụng ffmpeg để gửi đến máy chủ RTMP của bạn.

Bước 3: Truyền phát video đến máy chủ thông qua OBS

Phát trực tuyến qua ffmpeg thuận tiện khi bạn có một video và bạn muốn phát lại, nhưng phát trực tiếp có thể linh hoạt hơn nhiều. Với phần mềm OBS giúp máy tính của bạn có thể kết nối với máy chủ. Sau khi cài đặt OBS, cấu hình tùy chỉnh cửa sổ màn hình và nguồn âm thanh, sau đó thêm thông tin xác thực. Mặc định, bạn có thể streaming bằng cách phát trực tuyến full màn hình máy tính của mình.

Để đặt thông tin đăng nhập dịch vụ streaming, mở menu cài đặt của OBS, đến tùy chọn Stream và nhập

Streaming Service: Custom
Server: rtmp://your_domain/live
Play Path/Stream Key: obs_stream

Quay lại với server, mở file /etc/nginx/nginx.conf và thêm mục bổ sung là allow publish để nhập IP local của bạn. Lưu và đóng file, sau đó reload Nginx:

sudo systemctl reload nginx.service

Đóng menu cài đặt của OBS và nhấp vào Start Streaming ở giao diện chính. Tiếp theo, bạn thêm một vài tính năng khác để giúp server có thể tạo ra nhiều video stream hơn như Thêm khả năng giám sát hoặc Tạo stream.

Cuối cùng, bạn có thể thêm một số tính năng hỗ trợ người dùng phát trực tiếp video từ server bằng trình duyệt web. Có hai giao thức dùng để tạo luồng video dựa trên HTTP là HLS của Apple và MPEG DASH. Module Nginx-RTMP hỗ trợ cả hai tiêu chuẩn.

Để thêm HLS và DASH cho server, bạn cần sửa đổi rtmp trong file nginx.conf của mình. Mở /etc/nginx/nginx.conf bằng nano hoặc trình chỉnh sửa rồi thêm các lệnh để file cấu hình có dạng như sau:

sudo nano /etc/nginx/nginx.conf

. . .
rtmp {
server {
. . .
application live {
live on;
record off;
hls on;
hls_path /var/www/html/stream/hls;
hls_fragment 3;
hls_playlist_length 60;

dash on;
dash_path /var/www/html/stream/dash;
}
}
}
. . .

Lưu và đóng file.

Sau đó, thêm phần đoạn sau vào cuối file sites-available/rtmp của bạn:

sudo nano /etc/nginx/sites-available/rtmp

. . .
server {
listen 8088;

location / {
    add_header Access-Control-Allow-Origin *;
    root /var/www/html/stream;
}

}

types {
application/dash+xml mpd;
}

Lưu và đóng file.

Mở cổng 8088 trong firewall để tránh xung đột bằng lệnh sau:

sudo ufw allow 8088/tcp

Tiếp đến tạo một thư mục stream trong thư mục gốc để khớp với block cấu hình. Đây là nơi Nginx có thể tạo các file cần thiết cho HLS và DASH:

sudo mkdir /var/www/html/stream

Reload Nginx một lần nữa

sudo systemctl reload nginx

Kết luận

Trên đây là những thông tin mà LANIT muốn chia sẻ đến bạn về chủ đề RTMP là gì? RTMP Server là gì? ưu điểm của RTMP cũng như cách thiết lập máy chủ phát video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04 chi tiết. LANIT là đơn vị cung cấp VPS giá rẻ, máy chủ lưu trữ chuyên nghiệp, Liên hệ ngay để được tư vấn chi tiết!

avata Hải

Triệu Huyền Trang

Triệu Huyền Trang chuyên gia 3 năm kinh nghiệm trong ngành Công Nghệ, Phần Mềm. Chuyên chia sẻ các kiến thức phần mềm mã nguồn, ứng dụng và thông tin về công nghệ hữu ích.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!