ورود

View Full Version : حرفه ای: استریم ویدیو - HLS



amir441
سه شنبه 01 آذر 1401, 17:56 عصر
سلام و عرض خسته نباشید به همه مهندسین.

من یه پروژه شروع کردم با لاراول و میخوام یک سری ویدیو که از طریق پنل ادمین آپلود میشه به کاربر نشون بدم، ولی میخوام امنیت بالا باشه که کاربر نتونه دانلود کنه یا لینک مستقیم ویدیو به کاربری که عضویت نداره بفرسته تا کسه دیگه که ثبت نام نکرده نتواند مشاهده کند.

برای این کار تحقیق کردم و تا یه جاهایی پیش رفتم متوجه شدم باید از FFMPEG استفاده کنم و یک فایل m3u8 بسازم، که یک playlist تشکیل شده از فایل های با پسوند .ts هستند، بعدش اون را با HLS توی سمت کاربر نشون دادم.

اما مشکل من هنوزم هست کاربران میتوانند فایل های .ts دانلود کنند همچنین فایل m3u8 رو میتونند دانلود کنند.

با بررسی سایت هایی که این سیستم رو پیاده سازی کردن متوجه شدم که اونها دارند از token برای محافظت کردن URL های .ts و m3u8 استفاده میکنند.
مثل سایت aparat.com و roocket.ir

میخواستم راهنمایی بفرمایید که چگونه در سمت سرور و کلاینت باید از token رو بسازم و چگونه استفاده کنم.

ممنون

مهدی کرامتی
سه شنبه 01 آذر 1401, 19:40 عصر
ابتدا اینجا (https://laravel.io/forum/09-23-2014-how-to-support-http-byte-serving-in-file-streams) و سپس اینجا (https://github.com/happyworm/smartReadFile) را ببینید.
با استفاده از کدهای فوق می توانید مکانیسم Ranged Response رو پیاده سازی کنید که در پخش صدا و ویدئو بکار می رود. سپس در تابعی از کنترلر که کدهای فوق افزوده شده اند چک کنید کاربر مجاز به مشاهده ویدئو درخواستی (بر حسب پارامترهای دریافتی) هست یا نه. اینکار می تواند با تولید یک توکن برای هر کاربر با پاس دادن به اکشن مربوطه کنترل شود.
متاسفانه ابزاری مثل Internet Download Manager به دلیل اینکه در اکثر موارد خود را جای Browser جا می زند و تمام کوکی ها و ... کاربر را از صفحه مبدا می خواند و به سرور شما ارسال می کند، تقریبا راهی برای جلوگیری از آن نیست، اما بهر حال با روش فوق جلوی به اشتراک گذاشته شدن لینک دانلود ویدئو و یا افشای محل نگهداری ویدئوها بر روی سرور گرفته می شود.

rezaarmi
سه شنبه 22 آذر 1401, 00:54 صبح
سلام
امین یزدان پناه مشکل رو حل کرده
https://github.com/aminyazdanpanah/PHP-FFmpeg-video-streaming

هم ابزار خوبی بهت میده هم می تونی با encryption مشکلت رو بطرف کنی.