Trình phát IPTV ViniPlay là một ứng dụng xem truyền hình trực tuyến tự lưu trữ, được đóng gói trong Docker với giao diện web hiện đại. Repo này giải quyết các lỗi CORS, vấn đề tương thích trình duyệt và khó khăn khi quản lý danh sách M3U/EPG bằng cách dùng Node.js và FFmpeg ở phía backend. Nếu bạn muốn tự dựng một hệ thống IPTV có TV Guide, DVR, Chromecast và hỗ trợ nhiều người dùng, trình phát IPTV ViniPlay là một lựa chọn đáng để thử.
Thank you for reading this post, don't forget to subscribe!Những điểm chính
- ViniPlay là trình phát IPTV self-hosted chạy Docker, biến danh sách M3U và EPG thành giao diện web hiện đại.
- Hỗ trợ TV Guide ảo hóa hàng nghìn kênh, xem đa luồng, Chromecast, DVR, Picture-in-Picture và thông báo đẩy.
- Backend Node.js dùng FFmpeg để proxy hoặc transcode, giúp stream tương thích trình duyệt và có thể dùng GPU Nvidia, Intel QSV hoặc VAAPI.
- Quản lý người dùng với tài khoản admin, theo dõi xem trực tiếp, lịch sử phát và gửi thông báo đến toàn bộ người dùng.
- Giấy phép CC BY-NC-SA 4.0 cho phép sử dụng phi thương mại nhưng không cho phép dùng vào mục đích kinh doanh.
ViniPlay là gì và giải quyết vấn đề gì?

ViniPlay là một ứng dụng IPTV player tự lưu trữ, kết hợp backend Node.js và frontend giao diện web, được thiết kế để phát danh sách M3U kèm dữ liệu EPG. Thay vì để trình duyệt tự mở luồng stream và gặp lỗi CORS hay codec, backend của ViniPlay sẽ proxy hoặc transcode qua FFmpeg. Nhờ đó, người xem có trải nghiệm ổn định hơn trên nhiều thiết bị và trình duyệt hiện đại.
Nếu bạn đã từng chật vật với các ứng dụng IPTV chỉ phát raw M3U, ViniPlay giống như một lớp trung gian xử lý mọi vấn đề kỹ thuật. Nó không dừng lại ở việc phát single stream mà còn cung cấp TV Guide ảo hóa, theo dõi chương trình, ghi hình, phát nhiều kênh cùng lúc và phân quyền người dùng. Điều này đưa nó đến gần với trải nghiệm của các dịch vụ truyền hình trả phí, nhưng bạn tự quản lý toàn bộ hạ tầng.
Những tính năng nổi bật của ViniPlay là gì?

Nhóm tính năng của ViniPlay được xây dựng để phủ kín nhu cầu xem IPTV hàng ngày: TV Guide, multi-view, Chromecast, DVR, push notification, quản lý tài khoản và xử lý stream mạnh mẽ. Đây không chỉ là một trình phát M3U đơn giản, mà là một trung tâm giải trí có thể phục vụ nhiều người dùng trong cùng một gia đình hoặc nhóm nhỏ.
TV Guide và quản lý kênh
TV Guide của ViniPlay sử dụng UI virtualization để xử lý hàng nghìn kênh và chương trình mà vẫn mượt. Người dùng có thể tìm kênh, gắn dấu sao vào kênh yêu thích, xem danh mục Recents và dùng lịch phát sóng để lên kế hoạch xem. Phần này đặc biệt hữu ích khi nguồn M3U của bạn có số lượng kênh lớn và danh sách thường bị lộn xộn.
Đa luồng, Chromecast và DVR
Tính năng Multi-View cho phép kéo, thả và thay đổi kích thước nhiều player trên cùng một lưới. Bạn có thể lưu và tải lại layout đã tùy chỉnh, hoặc bật Immersive View để ẩn toàn bộ giao diện, chỉ giữ lại các màn hình xem. Về phần Chromecast, ViniPlay cast trực tiếp lên thiết bị Google Cast trong mạng LAN, nhưng tác giả cũng lưu ý chất lượng phụ thuộc vào nguồn tín hiệu gốc. Nếu cần ghi hình, mục DVR dùng FFmpeg để lên lịch ghi chương trình từ TV Guide hoặc theo kênh và khung giờ cụ thể.
FFmpeg, GPU và cấu hình stream
Backend dùng FFmpeg để proxy và transcode, nhằm đảm bảo stream phát được trên mọi trình duyệt hiện đại. ViniPlay hỗ trợ tạo stream profile tùy chỉnh, giúp bạn kiểm soát chất lượng và định dạng đầu ra. Với những ai có card đồ họa, repo này hỗ trợ GPU transcode trên Nvidia, Intel QSV và VAAPI để giảm tải CPU.
Hướng dẫn cài đặt & sử dụng ViniPlay như thế nào?

Bạn chỉ cần Docker hoặc Docker Compose để chạy ViniPlay. Sau khi container khởi động, bạn truy cập cổng 8998, tạo tài khoản admin và thêm nguồn dữ liệu trong Settings. Toàn bộ cấu hình đều được thực hiện qua giao diện web, không cần chỉnh sửa file phức tạp.
Cài đặt bằng Docker Compose
- Tạo thư mục cho ViniPlay và thêm file
docker-compose.ymlvới imageardovini/viniplay:latest, port8998:8998, volume./viniplay-data:/datavà biến môi trường từ file.env. - Trong file
.env, đặt giá trịSESSION_SECRETlà một chuỗi dài, ngẫu nhiên và bí mật. - Build và chạy container bằng lệnh
docker-compose up --build -d. - Mở trình duyệt tại
http://localhost:8998, tạo tài khoản admin đầu tiên. - Vào tab Settings, thêm nguồn M3U hoặc EPG từ remote URL, XC Code hoặc file tải lên. Sau đó bấm Process Sources & View Guide để tải, phân tích và gộp toàn bộ dữ liệu.
Cài đặt bằng Docker
Nếu không dùng Docker Compose, bạn có thể build image với lệnh docker build -t viniplay ., tạo thư mục viniplay-data, sau đó chạy container bằng lệnh docker run -d -p 8998:8998 --name viniplay --env-file ./.env -v ./viniplay-data:/data viniplay. Lưu ý lệnh này dùng đường dẫn tương đối, nên bạn cần chạy từ đúng thư mục chứa dữ liệu.
Ai nên dùng ViniPlay và ai không nên?

ViniPlay phù hợp với người dùng cá nhân, hộ gia đình hoặc nhóm nhỏ có kiến thức Docker, muốn xây dựng hệ thống IPTV riêng và kiểm soát tài khoản xem. Ngược lại, nếu bạn cần giải pháp thương mại hoặc chỉ muốn mở một file M3U đơn giản, repo này có thể quá nặng nề và ràng buộc bởi giấy phép.
Trường hợp nên dùng
- Bạn đã có sẵn nguồn M3U hoặc XC API và muốn gom vào một giao diện TV Guide thống nhất.
- Bạn muốn gia đình hoặc bạn bè xem qua tài khoản riêng, có phân quyền admin và người dùng thường.
- Bạn cần ghi hình chương trình, phát nhiều kênh cùng lúc hoặc cast lên TV trong nhà.
- Bạn có thể dùng Docker và chấp nhận vận hành một hạ tầng tự lưu trữ.
Những hạn chế cần cân nhắc
- Hỗ trợ VOD hiện chỉ hoạt động với XC API login, chưa hỗ trợ M3U link hay file upload trong phiên bản hiện tại.
- Chromecast có thể không ổn định nếu nguồn tín hiệu gốc yếu hoặc thiếu gói tin, do giới hạn của framework Cast.
- File DVR .ts chưa thể seek trong lúc ghi, theo roadmap sẽ được xử lý sau.
- Giấy phép CC BY-NC-SA 4.0 cấm sử dụng thương mại và yêu cầu chia sẻ tương tự nếu bạn phát sinh tác phẩm phái sinh.
Câu hỏi thường gặp
ViniPlay có miễn phí không?
ViniPlay là dự án mã nguồn mở với giấy phép CC BY-NC-SA 4.0. Bạn có thể tải về, sử dụng và chỉnh sửa miễn phí cho mục đích phi thương mại, nhưng phải ghi công tác giả và chia sẻ các phiên bản phái sinh theo giấy phép tương tự.
ViniPlay có hỗ trợ VOD không?
Có, nhưng hiện tại VOD chỉ hoạt động khi bạn đăng nhập bằng XC API. Giao diện chia VOD thành phim và series, có bộ lọc và tab rõ ràng. Phiên bản hiện tại chưa hỗ trợ VOD từ danh sách M3U hoặc file tải lên.
Tôi có cần GPU để chạy ViniPlay không?
Không. GPU chỉ dùng để tăng tốc transcode nếu bạn có nhu cầu chuyển định dạng nặng. ViniPlay hỗ trợ Nvidia, Intel QSV và VAAPI nhưng vẫn có thể chạy bằng CPU. Bạn nên tạo stream profile phù hợp với phần cứng của mình.
ViniPlay có thể theo dõi lịch sử xem của người dùng không?
Có. Trang Admin Activity Monitoring cho phép admin xem hành vi phát trực tiếp theo thời gian thực, lưu lịch sử phát và gửi broadcast message đến tất cả người dùng. Đây là tính năng hữu ích khi quản lý nhóm chia sẻ tài khoản.
Kết luận
Trình phát IPTV ViniPlay mang lại trải nghiệm xem M3U và EPG chuyên nghiệp hơn hẳn các player truyền thống nhờ giao diện web hiện đại, TV Guide ảo hóa, đa luồng, DVR, Chromecast và lớp backend xử lý stream bằng FFmpeg. Nó không dành cho mọi đối tượng, đặc biệt nếu bạn cần VOD từ M3U hoặc có ý định dùng thương mại. Nếu bạn thuộc nhóm người dùng tự lưu trữ, hãy truy cập repository ViniPlay trên GitHub, đọc README kỹ trước khi chạy Docker và tham gia Discord để trò chuyện với cộng đồng.

