NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
17/03/2025
Lượt xem

Hướng dẫn thiết lập Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04

17/03/2025
20 phút đọc
Lượt xem

Đánh giá

5/5 - (116 bình chọn)

Nginx-RTMP là một module mở rộng của Nginx, cho phép thiết lập video streaming server dễ dàng và hiệu quả. Với khả năng hỗ trợ giao thức RTMP (Real-Time Messaging Protocol), Nginx-RTMP giúp truyền phát video trực tiếp với độ trễ thấp, phù hợp cho các nền tảng như YouTube, Facebook Live,… Trong bài viết này, mình sẽ hướng dẫn bạn cách cài đặt và cấu hình Nginx-RTMP trên Ubuntu 20.04, giúp bạn xây dựng hệ thống livestream chuyên nghiệp, ổn định và tối ưu chi phí.

Những điểm chính

  • Biết được các điều kiện cơ bản cần chuẩn bị trước khi bắt đầu thiết lập Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04.
  • Hướng dẫn chi tiết từng bước cách thiết lập Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04.
  • Giới thiệu Vietnix là giải pháp VPS đáng tin cậy để triển khai các dự án streaming hiệu quả và tiết kiệm.

Yêu cầu để thiết lập Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04

  • 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.

Nếu bạn chưa cài đặt Nginx trên Ubuntu 20.04 thì có thể tìm hiểu thêm qua bài viết để biết cách cài đặt đúng cách mà không gặp lỗi.

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

Hầu hết các công cụ streaming hiện đại đều hỗ trợ giao thức RTMP, giao thức này 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 cho phép bạn cung cấp luồng RTMP với cấu hình tối thiểu từ một URL chuyên dụng, giống như cung cấp quyền truy cập HTTP vào các trang web theo mặc định. Module Nginx RTMP không được thiết lập tự động trong Nginx, nhưng trên Ubuntu 20.04 và hầu hết các bản Linux khác, bạn có thể cài đặt dưới dạng package bổ sung.

Bắt đầu bằng cách 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

Việc cài đặt module sẽ không kích hoạt streaming. Bạn sẽ 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.

Sử dụng nano hoặc trình soạn thảo văn bản yêu thích để mở file cấu hình chính của Nginx /etc/nginx/nginx.conf và thêm lệnh cấu hình này 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.1deny publish all: Chỉ cho phép xuất bản video từ cùng một máy chủ để tránh bất kỳ người dùng nào khác có thể push stream của riêng họ.
  • application live: Xác định một block ứng dụng sẽ khả dụng tại đường dẫn URL là /live.
  • live on: Bật chế độ trực tiếp để nhiều người dùng 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, do đó tất cả các luồng không được lưu riêng vào đĩa theo mặc định.

Lưu và đóng file. Nếu bạn đang sử dụng nano, hãy nhấn Ctrl + X, sau đó khi được nhắc hãy nhấn YEnter.

Theo mặc định thì RTMP sẽ lắng nghe trên port 1935, có nghĩa là bạn cần mở cổng đó trong firewall của mình. Nếu đã cấu hình ufw như một phần của thiết lập máy chủ ban đầu, hãy chạy lệnh sau:

sudo ufw allow 1935/tcp

Bây giờ bạn có thể reload Nginx:

sudo systemctl reload nginx.service

Nếu bạn muốn xây dựng hệ thống streaming trực tiếp bằng Nginx-RTMP, việc cài đặt và cấu hình trên một VPS sẽ giúp đảm bảo môi trường hoạt động độc lập, tối ưu tài nguyên và xử lý tốt các luồng phát trực tiếp.

Để đạt hiệu suất cao và trải nghiệm mượt mà, VPS tại Vietnix là lựa chọn lý tưởng. Với các gói VPS Giá Rẻ, VPS SSD, VPS AMD, VPS NVMe, Vietnix đáp ứng đa dạng nhu cầu từ cơ bản đến nâng cao, giúp bạn phát video với tốc độ ổn định và chi phí tối ưu. Liên hệ với Vietnix để tham khảo chi tiết các gói dịch vụ và lựa chọn giải pháp phù hợp nhất!

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

Có nhiều cách để gửi video đến máy chủ RTMP. Đầu tiên là sử dụng ffmpeg, một tiện ích video – âm thanh phổ biến giúp phát file video trực tiếp trên máy chủ. Nếu bạn chưa có sẵn video thì 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 như YouTube.

Để sử dụng youtube-dl, bạn cũng 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. Ví dụ như tải một video từ kênh của Vietnix:

youtube-dl https://www.youtube.com/watch?v=fOqr3InU6P8&t

Bạn sẽ thấy một số output khi youtube-dl kết hợp các luồng video và âm thanh đang tải xuống lại thành một file duy nhất:

Output
[youtube] fOqr3InU6P8&t: Downloading webpage
WARNING: Requested formats are incompatible for merge and will be merged into mkv.
[download] vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.f137.mp4
[download] 100% of 32.82MiB in 08:40
[download] vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.f251.webm
[download] 100% of 1.94MiB in 00:38
[ffmpeg] Merging formats into "vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.mkv"
Deleting original file vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.f137.mp4 (pass -k to keep)
Deleting original file vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.f251.webm (pass -k to keep)

Bây giờ, bạn sẽ có một file video trong thư mục hiện tại với tiêu đề như vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.mkv. Để phát trực tuyến, bạn sẽ cần cài đặt ffmpeg:

sudo apt install ffmpeg

Và sử dụng ffmpeg để gửi đến máy chủ RTMP của bạn:

ffmpeg -repository -i "vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.mkv" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/stream

Lệnh ffmpeg này đang chuẩn bị video cho việc streaming. Ngoài ra, bạn có thể tìm hiểu các tùy chọn khác như sau:

  • -re: Output sẽ được đọc ở tốc độ khung hình gốc của nó.
  • -i: “vietnix dich vu hosting vps toc do cao uy tin hang dau viet nam-fOqr3InU6P8&t.mkv“: Chỉ định đường dẫn đến file input.
  • -c:v được đặt thành copy: Bạn đang sao chép nguyên bản định dạng video đã nhận được từ YouTube.
  • -c:a có các tham số khác, cụ thể là aac -ar 44100 -ac 1. Bạn cần lấy định dạng lại âm thanh cho phù hợp với RTMP. aac là một codec âm thanh được hỗ trợ rộng rãi, 44100 hz là tần số phổ biến và -ac 1 chỉ định phiên bản đầu tiên của thông số AAC.
  • -f flv gói video trong conitainer định dạng flv để tương thích tối đa với RTMP.

Video được gửi tới rtmp://localhost/live/stream vì bạn đã xác định cấu hình live ở Bước 1 và stream là URL được chọn cho video này.

Trong khi ffmpeg đang truyền phát video, công cụ này sẽ cho output với các thông số:

Output
frame=  127 fps= 25 q=-1.0 size=     405kB time=00:00:05.00 bitrate= 662.2kbits/s speed=frame=  140 fps= 25 q=-1.0 size=     628kB time=00:00:05.52 bitrate= 931.0kbits/s speed=frame=  153 fps= 25 q=-1.0 size=     866kB time=00:00:06.04 bitrate=1173.1kbits/s speed=

Đây là output ffmpeg ở dạng tiêu chuẩn.. Sử dụng video mẫu này, bạn sẽ nhận được fps= 25.
Trong khi ffmpeg đang chạy, bạn có thể kết nối với luồng RTMP từ trình phát video. Nếu đã cài đặt VLC, mpv hoặc một trình phát đa phương tiện khác, bạn sẽ có thể xem stream bằng cách mở URL rtmp://your_domain/live/stream trong trình phát đa phương tiện. Stream sẽ chấm dứt sau khi ffmpeg phát xong video. Nếu muốn tiếp tục lặp lại, bạn có thể thêm -stream_loop -1 vào đầu lệnh ffmpeg.

iconLưu ý

Bạn cũng có thể phát trực tiếp Facebook Live bằng ffmpeg mà không cần sử dụng Nginx-RTMP bằng cách thay thế rtmp://localhost/live/stream trong lệnh ffmpeg bằng rtmps://live-api-s .facebook.com:443/rtmp/your-facebook-stream-key.

Trên đây là cách truyền phát các nguồn video static từ dòng lệnh, bạn sẽ tìm hiểu cách truyền phát video từ các dynamic bằng OBS trên máy tính để bàn.

Bước 3: Truyền phát video đến server qua OBS (Tùy chọn)

Phát trực tuyến qua ffmpeg thuận tiện khi bạn có một video đã chuẩn bị sẵn mà 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. Phần mềm phổ biến nhất để phát trực tiếp là OBS (Open Broadcaster Software) – một phần mềm miễn phí với mã nguồn mở và tính năng mạnh mẽ. OBS là ứng dụng dành cho máy tính để bàn và sẽ kết nối với máy chủ thông qua máy tính của bạn.
Sau khi cài đặt OBS, bạn sẽ cấu hình tùy chỉnh cửa sổ màn hình và nguồn âm thanh muốn thêm vào stream, sau đó thêm thông tin xác thực cho dịch vụ phát trực tuyến. Theo mặc định, bạn có thể streaming bằng cách phát trực tuyến toàn bộ màn hình của mình. Để đặt thông tin đăng nhập dịch vụ streaming, hãy mở menu cài đặt của OBS, điều hướng đến tùy chọn Stream và nhập:

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

obs_stream là đường dẫn tùy chọn – trong trường hợp này, video của bạn sẽ có tại rtmp://your_domain/live/obs_stream. Bạn không cần bật xác thực nhưng cần thêm một mục bổ sung vào danh sách whitelist IP đã cấu hình ở Bước 1.
Quay lại với server, mở file /etc/nginx/nginx.conf và thêm một mục bổ sung là allow publish để nhập địa chỉ IP local của bạn:

sudo nano /etc/nginx/nginx.conf
. . .
                allow publish 127.0.0.1;
                allow publish your_local_ip_address;
                deny publish all;
. . .

Lưu và đóng file, sau đó reload Nginx:

sudo systemctl reload nginx.service

Bây giờ bạn có thể đóng menu cài đặt của OBS và nhấp vào Start Streaming từ giao diện chính. Hãy thử xem stream trong trình phát đa phương tiện như trước đây. Tiếp theo, bạn có thể 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.

Bước 4: Thêm khả năng giám sát (Bước tùy chọn)

Việc cấu hình Nginx để truyền phát video bằng module Nginx-RTMP đã xong, bước tiếp theo thông thường là bật trang thống kê RTMP. Thay vì thêm ngày càng nhiều chi tiết cấu hình vào file nginx.conf, Nginx cho phép bạn thêm cấu hình trên mỗi trang vào các file riêng lẻ trong thư mục con có tên là sites-available/. Trong trường hợp này, bạn sẽ tạo rtmp:

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

Thêm nội dung dưới đây:

server {
    listen 8080;
    server_name  localhost;

    # rtmp stat
    location /stat {
        rtmp_stat all;
        rtmp_stat_stylesheet stat.xsl;
    }
    location /stat.xsl {
        root /var/www/html/rtmp;
    }

    # rtmp control
    location /control {
        rtmp_control all;
    }
}

Lưu và đóng file. File stat.xsl từ cấu hình này được sử dụng để tạo kiểu và hiển thị trang thống kê RTMP trong trình duyệt của bạn. File này được cung cấp bởi thư viện libnginx-mod-rtmp mà bạn đã cài đặt từ trước nhưng được nén theo mặc định. Vì vậy bạn sẽ cần giải nén và đặt vào thư mục /var/www/html/rtmp để phù hợp với cấu hình trên.

Tạo thư mục /var/www/html/rtmp, sau đó giải nén file stat.xsl.gz bằng các lệnh sau:

sudo mkdir /var/www/html/rtmp
sudo gunzip -c /usr/share/doc/libnginx-mod-rtmp/examples/stat.xsl.gz > /var/www/html/rtmp/stat.xsl

Cuối cùng, để truy cập trang thống kê đã thêm, bạn cần mở một port khác trong tường lửa của mình. Cụ thể, lệnh listen đã được cấu hình với cổng 8080, vì vậy bạn sẽ cần thêm rule để có thể truy cập Nginx trên cổng đó. Tuy nhiên, tốt nhất là chỉ cho phép địa chỉ IP của riêng bạn để tránh người khác có thể truy cập vào. Chạy lệnh sau:

sudo ufw allow from your_ip_address to any port http-alt

Tiếp theo, bạn sẽ cần kích hoạt cấu hình mới này. Quy ước của Nginx là tạo các symbolic link từ các file trong thư mục sites-available/ đến một thư mục khác có tên là sites-enable/ khi bật hoặc tắt chúng. Cần phải sử dụng các đường dẫn một cách đầy đủ để tạo liên kết:

sudo ln -s /etc/nginx/sites-available/rtmp /etc/nginx/sites-enabled/rtmp

Bây giờ bạn có thể tải lại Nginx:

sudo systemctl reload nginx.service

Truy cập http://your_domain:8080/stat trong trình duyệt để xem trang thống kê RTMP. Sau đó làm mới trang trong khi streaming video để có thể xem số liệu thống kê về các thông số. Trong phần cuối cùng, bạn sẽ tìm hiểu cách thực hiện stream trong trình duyệt mà không cần sử dụng nền tảng phát trực tuyến của bên thứ ba hoặc ứng dụng trình phát đa phương tiện.

Bước 5: Tạo stream với công nghệ hiện đại cho trình duyệt (Bước tùy chọn)

Ở bước cuối cùng, bạn có thể thêm một số thành phần hỗ trợ để người dùng có thể phát trực tiếp video từ server bằng trình duyệt web. Có hai giao thức có thể được sử 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 ưa thích , sau đó thêm các lệnh để file cấu hình có dạng như dưới đây:

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. Tiếp theo, thêm phần này 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;
}

iconLưu ý

Tiêu đề Access-Control-Allow-Origin * có nhiệm vụ bật tính năng CORS (Cross-Origin Resource Sharing) vốn bị tắt theo mặc định. Tính năng này giúp trao đổi thông tin với các trình duyệt web truy cập dữ liệu từ server để thông báo rằng nó có thể tải tài nguyên từ các port hoặc domain khác. CORS là cần thiết để tương thích tối đa với các ứng dụng khách HLS và DASH, đồng thời chuyển đổi cấu hình chung khi triển khai web khác.

Lưu và đóng file. Lưu ý rằng bạn đang sử dụng port 8088 để tránh xung đột với bất kỳ dịch vụ nào đang chạy trên cổng 80 hoặc 443. Mở cổng này trong firewall:

sudo ufw allow 8088/tcp

Cuối cùng, hãy tạo một thư mục stream trong thư mục gốc của web để 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

Bây giờ, bạn sẽ có một stream HLS tại http://your_domain:8088/hls/stream.m3u8 và một stream DASH có sẵn tại http://your_domain:8088/dash/stream.mpd. Các endpoint này sẽ các siêu dữ liệu cần thiết trên nguồn cấp dữ liệu video RTMP của bạn để hỗ trợ các API.

Vietnix – Đơn vị cho thuê VPS chất lượng, uy tín 

Nếu bạn đang tìm kiếm một nhà cung cấp VPS uy tín để triển khai dự án, Vietnix chính là lựa chọn hoàn hảo. Với cam kết về chất lượng và tốc độ vượt trội, Vietnix tự hào là thương hiệu hàng đầu trong lĩnh vực cung cấp VPS tại Việt Nam.

Những lý do nên chọn Vietnix:

  • Hơn 13 năm kinh nghiệm trong việc cung cấp dịch vụ VPS chuyên nghiệp.
  • Hơn 90.000 khách hàng trong và ngoài nước tin tưởng sử dụng.
  • Hơn 100.000 dịch vụ đã được kích hoạt thành công.
  • Chứng nhận ISO 9001ISO 27001, đảm bảo tiêu chuẩn chất lượng và bảo mật cao nhất.
  • 97% khách hàng hài lòng, đánh giá 5 sao và sẵn sàng giới thiệu cho người quen.

Hãy liên hệ Vietnix ngay hôm nay để được tư vấn và chọn gói VPS phù hợp nhất với nhu cầu của bạn!

Thông tin liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Website: https://vietnix.vn/ 

Qua bài viết này, bạn đã nắm được cách thiết lập Video Streaming Server bằng Nginx-RTMP trên Ubuntu 20.04. Đây là một giải pháp mạnh mẽ, linh hoạt và tiết kiệm, giúp bạn dễ dàng triển khai hệ thống phát trực tiếp video phục vụ cho nhiều mục đích như giải trí, giáo dục hay kinh doanh. Với khả năng mở rộng cao và độ trễ thấp, Nginx-RTMP mang lại trải nghiệm tối ưu cho cả người dùng lẫn nhà cung cấp nội dung. Chúc bạn thành công!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Icon tab

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

Vector

PHẦN CỨNG MẠNH MẼ

Vector

HỖ TRỢ 24/7

Vector
ĐĂNG KÝ NGAYGroup icon
khuyến mãi cuối tháng 3
Nhanh tay, số lượng có hạn!
17/03/2025 - 31/03/2025
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG