Source setup

پلی‌لیست M3U چیست؟ قالب، نمونه‌ها و تنظیم در پلیر

پلی‌لیست M3U چیست، دو تگ اصلی EXTM3U و EXTINF بر اساس RFC 8216 چگونه کار می‌کنند، تفاوت واقعی M3U و M3U8 و نحوه بارگذاری آن در پلیری مثل IPTV Expert.

لپ‌تاپ و قهوه روی میز، نماد بخش فنی و متنی ساخت پلی‌لیست M3U
IPTV Expert 8 دقیقه خواندن

پلی‌لیست M3U یک فایل متنی ساده است. تعریف کامل همین است. سردرگمی اطراف آن از این‌جا می‌آید که دو جامعه متفاوت همین قالب ساده را در دو جهت متفاوت گسترش داده‌اند.

مهندسان استریم از M3U8 دقیقاً همان‌طور که RFC 8216 تعریف کرده استفاده می‌کنند: به‌عنوان قالب پلی‌لیست پشت استریم ویدیوی HLS. ارائه‌دهندگان IPTV به‌صورت غیررسمی از M3U ساده استفاده می‌کنند و تگ‌های اختصاصی خودشان برای نام کانال و لوگو را اضافه می‌کنند که هرگز بخشی از هیچ استاندارد رسمی نبوده‌اند. هر دو استفاده درست از این قالب هستند. این راهنما این دو را به‌روشنی از هم جدا می‌کند، یک نمونه حاشیه‌نویسی‌شده از هرکدام نشان می‌دهد و توضیح می‌دهد وقتی آماده بارگذاری فایل در پلیر شدید، این فایل دقیقاً کجای کار قرار می‌گیرد.

نکات کلیدی

  • پلی‌لیست M3U یک فهرست متنی ساده از ورودی‌های استریم است که با تگ #EXTM3U شروع می‌شود.
  • M3U8 مشخصاً یعنی فایل با کدگذاری UTF-8 است، طبق بخش ۴.۱ استاندارد RFC 8216. این تفاوت عملی آن با M3U ساده است.
  • تگ‌های سبک IPTV مثل tvg-id و group-title یک قرارداد رایج هستند، نه بخشی از مشخصات رسمی HLS.

پلی‌لیست M3U دقیقاً چیست؟

پلی‌لیست M3U یک فایل متنی است که به یک پلیر رسانه می‌گوید چه چیزی و به چه ترتیبی پخش شود، هر ورودی در یک خط. در شکل گسترش‌یافته آن، فایل با #EXTM3U به‌عنوان اولین خط شروع می‌شود؛ الزامی که در بخش ۴.۳.۱.۱ استاندارد RFC 8216 تعریف شده است.

هر ورودی می‌تواند با یک تگ #EXTINF مشخص شود که همان RFC در بخش ۴.۳.۲.۱ آن را به‌صورت #EXTINF:<duration>,[<title>] تعریف می‌کند: یک مقدار مدت‌زمان به‌همراه یک عنوان اختیاری. کل قالب اصلی همین است: یک خط سربرگ، سپس جفت‌های داده و URL. هر چیز دیگری که در یک پلی‌لیست واقعی می‌بینید، یک لایه گسترش‌یافته روی همین ساختار حداقلی است.

تفاوت M3U و M3U8 واقعاً چیست؟

M3U8 مشخصاً یعنی پلی‌لیست با UTF-8 کدگذاری شده است، الزامی که RFC 8216 مستقیماً در بخش ۴.۱ آن را بیان می‌کند. در مقابل، M3U ساده هیچ قرارداد کدگذاری ثابتی ندارد. این قالب پیش از هر الزام رسمی وجود داشته و از نظر تاریخی به‌عنوان Latin-1 یا هر پیش‌فرض سیستم محلی در نظر گرفته می‌شد.

M3U M3U8
کدگذاری ثابت نیست (تاریخاً Latin-1 یا پیش‌فرض سیستم) UTF-8، طبق RFC 8216 بخش ۴.۱
تابع یک استاندارد؟ هیچ استاندارد واحدی ندارد بله، RFC 8216 (برای استفاده در HLS)
پسوند رایج فایل .m3u .m3u8
نشانه رایج ناسازگاری نام کانال‌های دارای حروف خاص یا غیرلاتین به‌هم‌ریخته معمولاً هیچ، وقتی کدگذاری درست باشد

تفاوت کدگذاری را واضح‌ترین جایی می‌بینید که نام یک کانال از حروف خاص یا خطی غیرلاتین استفاده کند. اگر پلیر انتظار UTF-8 داشته باشد اما فایلی با کدگذاری متفاوت دریافت کند، آن حروف می‌توانند به نمادهای به‌هم‌ریخته تبدیل شوند، حتی اگر بقیه پلی‌لیست درست کار کند. وقتی حروف نام کانال‌ها خراب دیده می‌شود اما پخش همچنان کار می‌کند، علت معمولاً کدگذاری است، نه ساختار خود پلی‌لیست.

نمونه حاشیه‌نویسی‌شده — یک پلی‌لیست استاندارد HLS به‌صورت M3U8

RFC 8216 این قالب را مستقیماً تعریف می‌کند: پلی‌لیستی متشکل از ارجاع به بخش‌های ویدیو، هرکدام با مدت‌زمان #EXTINF خودش، که برای تحویل یک استریم واحد به‌صورت تکه‌تکه استفاده می‌شود. این همان قالبی است که نام «M3U8» در خودِ استاندارد به آن اشاره دارد.

#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

هر خط این‌جا اهمیت دارد. #EXT-X-VERSION و #EXT-X-TARGETDURATION تگ‌های اختصاصی HLS از همان RFC هستند و هر فایل .ts. یک بخش کوتاه ویدیو است که پلیر به‌ترتیب دریافت می‌کند. این همان قالبی است که زیرساخت واقعی ویدیوی وب بر پایه آن کار می‌کند. ارائه‌دهنده IPTV به‌ندرت این را مستقیم در اختیارتان می‌گذارد، اما اغلب همین چیزی است که پلیر شما در پس‌زمینه، وقتی یک منبع در حال پخش است، دریافت می‌کند.

پیاده‌سازی‌های واقعی HLS معمولاً یک لایه دیگر هم روی این اضافه می‌کنند: یک پلی‌لیست اصلی، مشخص‌شده با تگ #EXT-X-STREAM-INF، که چند نسخه از همان استریم را با نرخ بیت یا رزولوشن‌های مختلف فهرست می‌کند و به پلیر اجازه می‌دهد بسته به شرایط شبکه بین آن‌ها جابه‌جا شود. لینکی که به شما داده می‌شود ممکن است به همین پلی‌لیست اصلی اشاره کند، نه مستقیم به فهرست بخش‌های بالا؛ پلیر باقی مسیر را به‌طور خودکار حل می‌کند.

بیشتر توضیح‌دهنده‌های متمرکز بر IPTV این ساختار لایه‌ای را کاملاً نادیده می‌گیرند، چون پلی‌لیست‌های IPTV به‌ندرت از آن استفاده می‌کنند. با این حال اهمیت دارد: این همان ساختاری است که یک پلیر ویدیو واقعاً برای درک آن ساخته شده، حتی وقتی فایل M3U که در اختیار شماست هیچ شباهتی به آن ندارد.

نمونه حاشیه‌نویسی‌شده — یک پلی‌لیست معمولی به سبک IPTV

ارائه‌دهندگان IPTV قالب پایه را به‌صورت غیررسمی گسترش می‌دهند و ویژگی‌هایی مثل tvg-id، tvg-logo و group-title را به هر ورودی اضافه می‌کنند. هیچ‌کدام از این‌ها در RFC 8216 تعریف نشده‌اند. این‌ها یک قرارداد رایج هستند که به‌خاطر مفید بودن، در میان پلیرها و ارائه‌دهندگان IPTV گسترش یافته‌اند، نه چون یک نهاد استانداردساز آن‌ها را مشخص کرده باشد.

#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

آدرس‌ها و توکن‌های بالا فقط جای‌گیرنده هستند؛ هیچ‌وقت آدرس واقعی یک پلی‌لیست را علنی منتشر یا به اشتراک نگذارید. هرکسی که لینک واقعی را داشته باشد می‌تواند از منبع شما استفاده کند، درست مثل اینکه هرکسی رمز عبور را داشته باشد می‌تواند وارد یک حساب شود.

به مدت‌زمان -1‎ توجه کنید: این یک قرارداد پخش زنده است به معنای «بدون مدت‌زمان ثابت»، که با مدت‌زمان‌های محدود نمونه HLS بالا فرق دارد. یک تگ یکسان، اما با معنای عملی متفاوت بسته به اینکه کدام‌یک از این دو سنت آن فایل را تولید کرده باشد.

راهنمای برنامه (EPG) کجای این ماجراست؟

برخی فایل‌های M3U یک سربرگ url-tvg= دارند که به یک فایل جداگانه راهنمای برنامه اشاره می‌کند، اما داده راهنما خودش بیرون از پلی‌لیست قرار دارد. پلی‌لیست به پلیر می‌گوید چه استریم‌هایی وجود دارد؛ یک فایل XMLTV جداگانه می‌گوید در هرکدام چه چیزی پخش خواهد شد.

این یک جداسازی عمدی است، نه یک محدودیت. ارائه‌دهندگان می‌توانند داده راهنما را طبق برنامه زمانی خودش، حتی چند بار در روز اگر برنامه‌ها تغییر کند، به‌روزرسانی کنند، بدون آنکه خود پلی‌لیست را دست بزنند. فهرست کانال و برنامه زمانی دو فایل مستقل هستند که به‌طور هماهنگ با هم کار می‌کنند.

اگر M3U شما یک سربرگ url-tvg= داشته باشد، پلیری که از آن پشتیبانی می‌کند می‌تواند داده راهنما را به‌طور خودکار دریافت کند بدون آنکه شما یک آدرس دوم را دستی وارد کنید. اگر نداشته باشد، راهنما باید جداگانه اضافه شود که مرحله تنظیم متفاوتی از افزودن خود پلی‌لیست است و خارج از محدوده این مقاله.

پلیری مثل IPTV Expert چگونه از فایل M3U استفاده می‌کند؟

یک پلیر برای استفاده از منبع M3U فقط به دو چیز نیاز دارد: نامی که خودتان انتخاب می‌کنید و خود آدرس پلی‌لیست. این دقیقاً همان ورودی است که فرم افزودن منبع IPTV Expert می‌خواهد، نه چیزی بیشتر، و بدون هیچ مرحله جداگانه‌ای برای تجزیه دستی تگ‌هایی مثل tvg-logo.

فردی که گوشی را در دست دارد، نماد لحظه وارد کردن آدرس پلی‌لیست در فرم تنظیم پلیر

به‌محض ذخیره این دو فیلد، اپلیکیشن فایل را از آن آدرس دانلود می‌کند و پیش از تبدیل منبع به فعال، آن را تجزیه می‌کند. ورودی‌های #EXTINF را می‌خواند، هر داده group-title و tvg-logo را در همین مسیر دریافت می‌کند و فهرست کانال شما را از آنچه می‌یابد می‌سازد. اگر مراحل دقیق کلیک‌به‌کلیک برای دستگاه خود را می‌خواهید، نحوه افزودن پلی‌لیست M3U به IPTV Expert اندروید، iOS، ویندوز، مک، لینوکس، اندروید تی‌وی و Fire TV را جداگانه پوشش می‌دهد.

اگر هنوز IPTV Expert را نصب نکرده‌اید، از صفحه انتخاب دانلود کامل شروع کنید و نسخه متناسب با دستگاه خود را انتخاب کنید، یا اگر هنوز در حال مقایسه گزینه‌ها هستید بهترین پلیرهای رایگان IPTV در ۲۰۲۶ را ببینید.

جمع‌بندی

سه نکته در همه موارد بالا مشترک است: پلی‌لیست M3U یک متن ساده بر پایه #EXTM3U و #EXTINF است؛ M3U8 مشخصاً یعنی کدگذاری UTF-8؛ و تگ‌های سبک IPTV که در پلی‌لیست‌های واقعی می‌بینید — tvg-id، tvg-logo، group-title — یک قرارداد به‌شدت رایج و لایه‌شده روی این قالب هستند، نه چیزی که RFC 8216 تعریف کرده باشد. وقتی این موضوع روشن شد، تنظیم آن در یک پلیر فقط دو فیلد است: یک نام و یک آدرس.

IPTV Expert

روی صفحه نمایش خود تماشا کنید

IPTV Expert را برای پلتفرم دلخواه خود دانلود کنید.

دانلود کنید

IPTV Expert کانال‌ها، فهرست‌های پخش یا اشتراک‌ها را ارائه، میزبانی یا فروش نمی‌دهد.