TS IPTV

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>

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ửỞ đâuNghĩa
<vlc:id>trong <extension> của mỗi trackSố thứ tự của track. TS IPTV dùng nó làm mã kênh.
<vlc:node title="…">trong <extension> cấp danh sáchMộ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 trackTuỳ 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>
  1. Dòng 2 khai báo cả không gian tên XSPF và không gian tên VLC.
  2. <title> đầu tiên là tên danh sách phát.
  3. Mỗi <track> có <location> (đường dẫn luồng), <title> (tên kênh), có thể có <image> (logo), và <vlc:id>.
  4. <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

  1. Mở các luồng trong VLC (Media › Open Network Stream) để chúng vào danh sách phát.
  2. Chọn Media › Save Playlist to File….
  3. Chọn định dạng XSPF và lưu với đuôi .xspf.

Bằng tay

  1. Chép ví dụ ở trên vào một trình soạn thảo văn bản thuần.
  2. Thêm hoặc sửa các <track>, mỗi phần tử một dòng.
  3. Viết & trong đường dẫn thành &amp;.
  4. 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

  1. Mở Thêm nguồn IPTV (nút Thêm IPTV).
  2. 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.
  3. 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ỗiBiểu hiệnCá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 xmlnsKhông nhận ra danh sách phátDùng đúng xmlns="http://xspf.org/ns/0/".
& trong đường dẫn chưa viết thành &amp;Lỗi đọc XMLViết &amp;.
Đườ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òngMất tên hoặc mất đường dẫnGiữ mỗi phần tử trên một dòng.
Track không có <title>Track bị bỏ quaMỗi track cần cả <location> và <title>.
Dựa vào <duration> cho kênh trực tiếpKhông có tác dụngBỏ <duration> với luồng trực tiếp.

TS IPTV hỗ trợ những gì

Tính năngTrạng thái
location, title, image của trackHỗ trợ trên mọi nền tảng
vlc:id làm mã kênhHỗ trợ
Nhóm từ vlc:nodeMộ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òngKhông hỗ trợ Giữ mỗi phần tử trên một dòng.
Header, DRM, lịch phát sóngKhông có trong XSPF Dùng M3U nếu cần.