Giới thiệu
Trong thời đại số hiện nay, việc phát video thời gian thực trở nên ngày càng phổ biến, đặc biệt trong các ứng dụng di động và web. Amazon IVS (Amazon Interactive Video Service) cung cấp một nền tảng mạnh mẽ cho việc phát video trực tiếp, nhưng đôi khi bạn cần phát video từ các nguồn không phải là trình duyệt hoặc ứng dụng di động. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng WHIP (WebRTC-HTTP Ingest Protocol) để phát video lên Amazon IVS từ nhiều nguồn khác nhau và các phương pháp cụ thể để thực hiện điều đó.
Nội dung
Tạo một Stage
Trước khi bắt đầu, bạn cần tạo một stage trên Amazon IVS. Bạn có thể sử dụng AWS CLI để thực hiện điều này. Dưới đây là lệnh tạo stage và token người tham gia:
bash
aws ivs-realtime create-stage \
--name "whip-demo-stage" \
--participant-token-configurations \
userId=demo-whip-broadcaster,capabilities=PUBLISH,SUBSCRIBE,duration=720
Lệnh này sẽ trả về thông tin về stage vừa tạo, bao gồm ARN và token người tham gia. Lưu ý rằng token này rất quan trọng cho các bước tiếp theo.
⚠️ Lưu ý: Endpoint WHIP được trả về không phải là endpoint WHIP chúng ta sẽ sử dụng. Endpoint chúng ta sẽ sử dụng là
https://global.whip.live-video.net
, được phân phối tải và sẽ tự động chuyển hướng đến endpoint phù hợp nhất cho mỗi phiên.
1️⃣ Phát Video với OBS
OBS (Open Broadcaster Software) là một trong những công cụ phổ biến để phát video. Để phát video qua WHIP với OBS, bạn thực hiện các bước sau:
- Vào Cài đặt -> Phát, chọn
WHIP
dưới Dịch vụ. - Nhập
https://global.whip.live-video.net
làm endpoint cho stage của bạn và token người tham gia vào ô Bearer Token.
Để có hiệu suất tốt nhất, hãy đảm bảo rằng cài đặt phát sóng của bạn phù hợp với các khuyến nghị trong tài liệu IVS.
Sau đó, nhấn Bắt đầu phát sóng và theo dõi dòng thời gian trong AWS console để xem video của bạn.
2️⃣ Phát Video với aiortc
trong Python
Nếu bạn muốn phát video từ webcam hoặc video đã ghi trước, bạn có thể sử dụng thư viện aiortc
trong Python. Thực hiện theo các bước sau:
- Tải và cài đặt thư viện
aiortc
. - Sử dụng mã sau để phát video MP4:
bash
python ivs-stage-publish.py \
--token $STAGE_TOKEN \
--path-to-mp4 /path/to/an.mp4
Khi video đã sẵn sàng, bạn sẽ thấy thông báo:
2025-08-29 10:44:16,786 - INFO - 🎉 WebRTC publishing established!
3️⃣ Phát Video với FFMPEG
FFMPEG là một công cụ mạnh mẽ để xử lý video. Để phát video lên Amazon IVS qua WHIP, bạn cần biên dịch FFMPEG với WHIP muxer. Sau khi biên dịch, sử dụng lệnh sau:
bash
ffmpeg -re -stream_loop -1 \
-i /path/to/an.mp4 \
-c:v libx264 -profile:v baseline -c:a copy \
-f whip -authorization "$STAGE_TOKEN" \
"https://global.whip.live-video.net"
Làm theo hướng dẫn trong AWS console để xem video phát sóng.
4️⃣ Phát Video với srtc
Thư viện srtc
là một giải pháp mã nguồn mở cho WebRTC. Để sử dụng:
- Tải bản phát hành mới nhất cho hệ điều hành của bạn.
- Sử dụng lệnh sau để phát video:
bash
$ ./srtc_publish --url https://global.whip.live-video.net --token $STAGE_TOKEN --file ./sintel.h264 --loop
🔇 Lưu ý: Dự án này chủ yếu phát video mà không có âm thanh.
Thực hành tốt nhất
- Kiểm tra kết nối Internet: Đảm bảo rằng bạn có kết nối Internet ổn định trước khi phát video.
- Cấu hình video: Sử dụng độ phân giải và bitrate phù hợp để đảm bảo chất lượng video tốt nhất.
- Giám sát hiệu suất: Theo dõi hiệu suất phát sóng để phát hiện kịp thời bất kỳ vấn đề nào.
Những cạm bẫy phổ biến
- Lỗi token: Đảm bảo rằng bạn đang sử dụng token đúng và hợp lệ.
- Endpoint không chính xác: Sử dụng endpoint WHIP chính xác để tránh lỗi kết nối.
Mẹo hiệu suất
- Tối ưu hóa cài đặt OBS: Điều chỉnh cài đặt bitrate và khung hình để tối ưu hóa hiệu suất phát sóng.
- Sử dụng phần cứng hỗ trợ: Đảm bảo rằng thiết bị phát video của bạn đủ mạnh để xử lý video thời gian thực.
Kết luận
Trong bài viết này, chúng ta đã khám phá nhiều cách để phát video lên Amazon IVS thông qua WHIP. Hy vọng rằng những thông tin này sẽ giúp bạn mở rộng khả năng phát trực tiếp của mình ra ngoài các ứng dụng web và di động truyền thống. Nếu bạn có câu hỏi hoặc ý tưởng nào về việc sử dụng WHIP với Amazon IVS, hãy chia sẻ trong phần bình luận bên dưới!