Danh sách phát XSPF
XSPF (XML Shareable Playlist Format, đọc là “spiff”) là định dạng danh sách phát dạng XML. VLC dùng nó để lưu danh sách phát, kể cả danh sách kênh IPTV.
TS IPTV không có sẵn kênh nào. Ứng dụng chỉ phát các danh sách phát do bạn thêm vào.
XSPF là gì
XSPF là một định dạng mở, được mô tả trong đặc tả XSPF phiên bản 1. Mỗi mục là một <track> với đường dẫn, tiêu đề và ảnh. So với M3U, XSPF dài hơn nhưng có cấu trúc chặt chẽ; bạn thường gặp nó khi lưu danh sách từ VLC.
Cú pháp
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<title>…</title> (0 hoặc 1)
<trackList> (đúng 1, có thể rỗng)
<track>
<location>URI</location> (0 hoặc nhiều; chỉ một được phát)
<title>…</title> (0 hoặc 1)
<image>URI</image> (0 hoặc 1)
<extension application="URI">…</extension>
</track>
</trackList>
</playlist>
- Không gian tên (namespace) là
http://xspf.org/ns/0/vàversion="1": không gian tên mang số 0 nhưng phiên bản là 1. - Phần tử tuỳ chọn ở cấp danh sách:
title,creator,annotation,info,location,identifier,image,date,license,attribution,link,meta,extension. - Phần tử tuỳ chọn ở cấp track:
location,identifier,title,creator,annotation,info,image,album,trackNum,duration(mili giây, chỉ mang tính gợi ý),link,meta,extension. - Đường dẫn tương đối được tính theo địa chỉ của chính tệp XSPF.
Phần mở rộng của VLC
VLC thêm thông tin riêng trong <extension application="http://www.videolan.org/vlc/playlist/0">, với không gian tên xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/":
| Phần tử | Ở đâu | Nghĩa |
|---|---|---|
<vlc:id> | trong <extension> của mỗi track | Số thứ tự của track. TS IPTV dùng nó làm mã kênh. |
<vlc:node title="…"> | trong <extension> cấp danh sách | Một nhóm (thư mục). |
<vlc:item tid="N"/> | trong <vlc:node> | Track có vlc:id bằng N thuộc nhóm này. |
<vlc:option> | trong <extension> của track | Tuỳ chọn phát của VLC. TS IPTV bỏ qua. |
Ví dụ đầy đủ
Track đầu tiên là luồng thử nghiệm công khai của Mux (Big Buck Bunny © Blender Foundation, CC BY 3.0); track thứ hai dùng đường dẫn giả example.com.
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/">
<title>TS IPTV example playlist</title>
<trackList>
<track>
<location>https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8</location>
<title>HLS Test Channel</title>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>0</vlc:id>
</extension>
</track>
<track>
<location>https://cdn.example.com/news/index.m3u8</location>
<title>Example News</title>
<image>https://example.com/logos/news.png</image>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:id>1</vlc:id>
</extension>
</track>
</trackList>
<extension application="http://www.videolan.org/vlc/playlist/0">
<vlc:node title="Test"><vlc:item tid="0"/></vlc:node>
<vlc:node title="News"><vlc:item tid="1"/></vlc:node>
</extension>
</playlist>
- Dòng 2 khai báo cả không gian tên XSPF và không gian tên VLC.
<title>đầu tiên là tên danh sách phát.- Mỗi
<track>có<location>(đường dẫn luồng),<title>(tên kênh), có thể có<image>(logo), và<vlc:id>. <extension>cuối tệp chia track vào các nhóm “Test” và “News”.
Giữ mỗi phần tử trên một dòng. Trình đọc XSPF hiện tại của TS IPTV đọc từng dòng, nên <location>…</location>, <title>…</title> và <vlc:id>…</vlc:id> phải nằm gọn trên một dòng như trong ví dụ. VLC cũng lưu tệp theo cách này.
Tạo một tệp
Bằng VLC
- Mở các luồng trong VLC (Media › Open Network Stream) để chúng vào danh sách phát.
- Chọn Media › Save Playlist to File….
- Chọn định dạng XSPF và lưu với đuôi
.xspf.
Bằng tay
- Chép ví dụ ở trên vào một trình soạn thảo văn bản thuần.
- Thêm hoặc sửa các
<track>, mỗi phần tử một dòng. - Viết
&trong đường dẫn thành&. - Lưu với mã hoá UTF-8, đuôi
.xspf.
Đưa tệp lên mạng
Giống như M3U: mọi đường dẫn HTTPS trả về chính nội dung tệp đều dùng được (https://raw.githubusercontent.com/<user>/<repo>/<branch>/playlist.xspf, https://<user>.github.io/<repo>/playlist.xspf, https://www.example.com/playlist.xspf, Dropbox với dl=1). Trang chia sẻ và đường dẫn blob/ của GitHub không dùng được. HTTPS được khuyến nghị; TS IPTV không cần CORS. Máy chủ có thể gửi Content-Type: application/xspf+xml hoặc text/xml. Chi tiết: đưa tệp M3U lên mạng.
Thêm vào TS IPTV
- Mở Thêm nguồn IPTV (nút Thêm IPTV).
- Nhập Tên nguồn, dán đường dẫn vào Liên kết nguồn rồi chọn Thêm IPTV; hoặc chọn Nhập từ tệp và chọn tệp
.xspf. - TS IPTV nhận ra XSPF qua dòng đầu
<?xml …?>và không gian tên và cho biết số kênh tìm thấy. Trên TV, dùng đường dẫn nếu TV không có trình chọn tệp.
Lỗi thường gặp
| Lỗi | Biểu hiện | Cách sửa |
|---|---|---|
Thiếu dòng đầu <?xml version="1.0" encoding="UTF-8"?> | Không nhận ra danh sách phát | Đặt dòng này ở ngay đầu tệp; hiện TS IPTV cần nó để nhận dạng XSPF. |
Thiếu hoặc sai xmlns | Không nhận ra danh sách phát | Dùng đúng xmlns="http://xspf.org/ns/0/". |
& trong đường dẫn chưa viết thành & | Lỗi đọc XML | Viết &. |
Đường dẫn đặt trong <title> hoặc <info> | Track không phát được | Đặt đường dẫn luồng trong <location>. |
| Một phần tử bị ngắt thành nhiều dòng | Mất tên hoặc mất đường dẫn | Giữ mỗi phần tử trên một dòng. |
Track không có <title> | Track bị bỏ qua | Mỗi track cần cả <location> và <title>. |
Dựa vào <duration> cho kênh trực tiếp | Không có tác dụng | Bỏ <duration> với luồng trực tiếp. |
TS IPTV hỗ trợ những gì
| Tính năng | Trạng thái |
|---|---|
location, title, image của track | Hỗ trợ trên mọi nền tảng |
vlc:id làm mã kênh | Hỗ trợ |
Nhóm từ vlc:node | Một phần Tên nhóm được đọc, nhưng track chưa được gán vào nhóm theo vlc:item tid. |
| Phần tử viết trên nhiều dòng | Không hỗ trợ Giữ mỗi phần tử trên một dòng. |
| Header, DRM, lịch phát sóng | Không có trong XSPF Dùng M3U nếu cần. |