Playlist M3U là gì? Định dạng, ví dụ và cách thiết lập trên đầu phát
Playlist M3U là gì, 2 thẻ cốt lõi EXTM3U và EXTINF theo RFC 8216 hoạt động ra sao, khác biệt thật giữa M3U và M3U8, và cách đầu phát như IPTV Expert tải nó.
Một playlist M3U là một file văn bản thuần túy. Đó là toàn bộ định nghĩa. Sự nhầm lẫn xoay quanh nó đến từ việc hai cộng đồng khác nhau mở rộng cùng một định dạng đơn giản này theo hai hướng khác nhau.
Kỹ sư streaming dùng M3U8 đúng như RFC 8216 định nghĩa: là định dạng playlist đứng sau công nghệ streaming video HLS. Nhà cung cấp IPTV thì dùng M3U thuần theo cách không chính thức, thêm vào các thẻ riêng cho tên kênh và logo — những thứ chưa từng nằm trong bất kỳ đặc tả chính thức nào. Cả hai đều là cách dùng đúng của định dạng này. Bài viết này tách bạch rõ hai hướng, đưa ra ví dụ có chú thích cho từng loại, và giải thích file này nằm ở đâu khi bạn sẵn sàng nạp nó vào một đầu phát.
Điểm chính
- Một playlist M3U là danh sách văn bản thuần các mục stream, bắt đầu bằng thẻ
#EXTM3U.- M3U8 cụ thể nghĩa là file được mã hóa UTF-8, theo RFC 8216 mục 4.1. Đó là khác biệt thực tế so với M3U thuần.
- Các thẻ kiểu IPTV như
tvg-idvàgroup-titlelà quy ước được dùng rộng rãi, không phải một phần của đặc tả HLS chính thức.
Playlist M3U chính xác là gì?
Một playlist M3U là file văn bản báo cho đầu phát biết cần phát gì và theo thứ tự nào, mỗi dòng một mục. Ở dạng mở rộng, file bắt đầu bằng #EXTM3U ở đúng dòng đầu tiên, một yêu cầu được quy định tại RFC 8216, mục 4.3.1.1.
Mỗi mục có thể được đặt trước bởi thẻ #EXTINF, được cùng RFC này định nghĩa tại mục 4.3.2.1 dưới dạng #EXTINF:<duration>,[<title>]: một giá trị thời lượng theo sau bởi tiêu đề tùy chọn. Đó là toàn bộ định dạng cốt lõi: một dòng tiêu đề, sau đó là các cặp metadata và URL. Mọi thứ khác bạn thấy trong một playlist thực tế đều là phần mở rộng đắp lên trên cấu trúc tối giản này.
M3U và M3U8: khác nhau thực sự ở điểm nào?
M3U8 cụ thể nghĩa là playlist được mã hóa UTF-8, một yêu cầu RFC 8216 nêu trực tiếp tại mục 4.1. Ngược lại, M3U thuần không có quy ước mã hóa cố định. Nó xuất hiện trước khi có yêu cầu chính thức nào và trong lịch sử thường được xử lý như Latin-1 hoặc theo mặc định của hệ thống cục bộ.
| M3U | M3U8 | |
|---|---|---|
| Mã hóa | Không cố định (thường là Latin-1 hoặc mặc định hệ thống) | UTF-8, bắt buộc theo RFC 8216 §4.1 |
| Có đặc tả quản lý không? | Không có tiêu chuẩn sở hữu duy nhất | Có, RFC 8216 (cho HLS) |
| Phần mở rộng file phổ biến | .m3u |
.m3u8 |
| Dấu hiệu thường gặp khi sai lệch mã hóa | Tên kênh có dấu hoặc chữ không phải Latin bị lỗi ký tự | Không xảy ra khi mã hóa đúng |
Bạn sẽ thấy rõ nhất sự khác biệt về mã hóa nếu tên kênh có ký tự có dấu hoặc chữ viết không phải Latin. Nếu đầu phát mong đợi UTF-8 nhưng nhận được file mã hóa khác, các ký tự đó có thể hiển thị thành ký hiệu lỗi dù playlist vẫn hoạt động bình thường ở phần còn lại. Khi bạn thấy ký tự lỗi trong tên kênh nhưng mọi thứ vẫn phát được, nguyên nhân thường là mã hóa, không phải cấu trúc playlist.
Ví dụ có chú thích — playlist M3U8 HLS chuẩn
RFC 8216 định nghĩa trực tiếp định dạng này: một playlist gồm các tham chiếu đoạn (segment), mỗi đoạn có thời lượng #EXTINF riêng, dùng để truyền một luồng stream duy nhất theo từng phần nhỏ. Đây chính là định dạng mang tên "M3U8" trong bản đặc tả gốc.
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.009,
segment-000.ts
#EXTINF:9.009,
segment-001.ts
#EXTINF:9.009,
segment-002.ts
#EXT-X-ENDLIST
Mỗi dòng ở đây đều quan trọng. #EXT-X-VERSION và #EXT-X-TARGETDURATION là các thẻ đặc thù của HLS từ cùng RFC, và mỗi file .ts là một đoạn video ngắn mà đầu phát tải tuần tự. Đây là định dạng mà hạ tầng video web thực sự vận hành trên đó. Nó hiếm khi là thứ nhà cung cấp IPTV đưa trực tiếp cho bạn, nhưng thường là thứ đầu phát của bạn đang tải ngầm khi một nguồn đang phát.
Các triển khai HLS thực tế thường thêm một lớp nữa: một master playlist, gắn thẻ #EXT-X-STREAM-INF, liệt kê nhiều phiên bản của cùng một luồng ở các mức bitrate hoặc độ phân giải khác nhau, cho phép đầu phát chuyển đổi khi điều kiện mạng thay đổi. Một URL duy nhất bạn nhận được có thể trỏ đến master playlist đó thay vì trỏ thẳng đến danh sách đoạn như ví dụ trên; đầu phát sẽ tự xử lý phần còn lại.
Hầu hết bài giải thích tập trung vào IPTV đều bỏ qua hoàn toàn cấu trúc phân lớp này, vì playlist IPTV hiếm khi dùng đến nó. Nhưng nó vẫn quan trọng: đó chính là cấu trúc mà một đầu phát video được xây dựng để hiểu, ngay cả khi file M3U bạn nhận được trông không giống vậy chút nào.
Ví dụ có chú thích — playlist kiểu IPTV thông thường
Nhà cung cấp IPTV mở rộng định dạng gốc theo cách không chính thức, thêm các thuộc tính như tvg-id, tvg-logo và group-title vào mỗi mục. Không thuộc tính nào trong số này được định nghĩa trong RFC 8216. Đây là quy ước mặc nhiên lan rộng qua các đầu phát và nhà cung cấp IPTV vì chúng hữu ích, chứ không phải vì một tổ chức tiêu chuẩn nào quy định.
#EXTM3U
#EXTINF:-1 tvg-id="channel.one" tvg-logo="https://example-provider.test/logo1.png" group-title="News",Channel One
https://example-provider.test/stream/CHANNEL_TOKEN_1
#EXTINF:-1 tvg-id="channel.two" tvg-logo="https://example-provider.test/logo2.png" group-title="Sports",Channel Two
https://example-provider.test/stream/CHANNEL_TOKEN_2
Các URL và token ở trên chỉ là chỗ giữ chỗ minh họa — không bao giờ đăng hay chia sẻ URL playlist thật một cách công khai. Bất kỳ ai có liên kết thật đều có thể dùng nguồn của bạn, giống như bất kỳ ai có mật khẩu đều có thể đăng nhập vào tài khoản.
Chú ý giá trị thời lượng -1: đây là quy ước cho luồng trực tiếp, nghĩa là "không có độ dài cố định", khác với các thời lượng đoạn hữu hạn trong ví dụ HLS ở trên. Cùng một thẻ, nhưng ý nghĩa thực tế khác nhau tùy vào việc file đó xuất phát từ truyền thống nào trong hai truyền thống trên.
EPG nằm ở đâu trong bức tranh này?
Một số file M3U có thêm dòng tiêu đề url-tvg= trỏ đến một file lịch phát sóng riêng, nhưng dữ liệu lịch phát sóng thực sự nằm ngoài playlist. Playlist cho đầu phát biết những luồng nào tồn tại; một file XMLTV riêng biệt cho biết lịch phát trên từng luồng đó.
Đây là một sự tách biệt có chủ đích, không phải hạn chế. Nhà cung cấp có thể cập nhật dữ liệu lịch phát theo lịch trình riêng, thậm chí vài lần một ngày nếu chương trình thay đổi, mà không cần đụng đến playlist. Danh sách kênh và lịch phát là hai file được duy trì độc lập nhưng phối hợp với nhau.
Nếu M3U của bạn có dòng tiêu đề url-tvg=, một đầu phát hỗ trợ tính năng này có thể tự động lấy dữ liệu lịch phát mà không cần bạn nhập thêm URL thứ hai bằng tay. Nếu không có, lịch phát phải được thêm riêng, đây là một bước thiết lập khác với việc thêm playlist và nằm ngoài phạm vi bài viết này.
Một đầu phát như IPTV Expert dùng file M3U như thế nào?
Một đầu phát chỉ cần hai thứ để dùng nguồn M3U: một tên do bạn chọn, và chính URL playlist. Đó chính xác là những gì biểu mẫu thêm nguồn của IPTV Expert yêu cầu, không hơn không kém, và không cần bước riêng để phân tích thủ công các thẻ như tvg-logo.

Sau khi bạn lưu hai trường đó, ứng dụng tải file tại URL đó về và phân tích trước khi coi nguồn là đang hoạt động. Nó đọc các mục #EXTINF, thu thập mọi metadata group-title và tvg-logo trên đường đi, rồi dựng danh sách kênh của bạn từ những gì tìm thấy. Nếu bạn muốn các bước thao tác cụ thể từng cú nhấp cho thiết bị của mình, Cách thêm playlist M3U vào IPTV Expert trình bày riêng cho Android, iOS, Windows, Mac, Linux, Android TV và Fire TV.
Nếu bạn chưa cài IPTV Expert, hãy bắt đầu từ bộ chọn tải đầy đủ và chọn phiên bản cho thiết bị của bạn, hoặc xem Đầu phát IPTV miễn phí tốt nhất năm 2026 nếu bạn vẫn đang so sánh các lựa chọn.
Kết luận
Ba điều xuyên suốt bài viết này: một playlist M3U là văn bản thuần được xây dựng quanh #EXTM3U và #EXTINF; M3U8 cụ thể nghĩa là mã hóa UTF-8; và các thẻ kiểu IPTV bạn sẽ thấy trong playlist thực tế — tvg-id, tvg-logo, group-title — là quy ước được áp dụng rộng rãi, đắp lên trên định dạng gốc, chứ không phải thứ RFC 8216 định nghĩa. Khi đã rõ điều đó, việc thiết lập trên một đầu phát chỉ còn là hai trường: một tên, và một URL.
IPTV Expert
Xem trên màn hình của bạn
Tải xuống IPTV Expert cho nền tảng ưa thích của bạn.
IPTV Expert không cung cấp, lưu trữ hoặc bán kênh, danh sách phát hoặc đăng ký.