Azar
4 سال پیش توسط Azar مطرح شد
5 پاسخ

چطوری باید ویدیو استریم کنم

دوستان ،تماس های تصویری و لایو و استریم ویدیو رو چجوری در پروژه هامون باید پیاده پیاده کنیم
کسی سابقه اینکار رو داشته ؟


ثبت پرسش جدید
Hossein Rafiee
تخصص : برنامه نویس php
@hossein.rafiee 4 سال پیش مطرح شد
0

@ali.bayat
آقای بیات میتونید راهنمایی کنید برامن هم چالش شده
تو یتیوب هم گشتم ولی به جز چنتا دوست هندی که نمیشد سر از کارشون در اورد بهچیزی برنخوردم

اگه کتابخونه ای چیزی برا لاراول سراغ دارید لطفا بگید .
و نکته بد این که هاستی یا سروری که استفادی میکنیم باید ویژهگی خاصی داشته باشه؟


Azar
@azarmame9734 4 سال پیش مطرح شد
0

@hossein.rafiee
حالا من خیلی کاری به زبان ندارم ولی php همچین کاری انجام نمیده اگه پروژه شما هم با لاراول باشه باید این قسمتش رو از یه زبان مناسب استفاده کنید،احتمالا با لاراول echo بشه به لاراول ربطش داد ولی باز هم از socket-io استفاده میشه
این کار توسط WebRTC و سوکت ها انجام میشه و باید با زبان هایی مثل node js و erlang و انجام بشه ولی من آموزش کاملی براش پیدا نکردم و همه جا دست و پا شکسته یه چیزی گفتن که فقط وبسایتشون visitor جذب کنه
برادران هندی هم من سراغشون نرفتم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
2

@hossein.rafiee
@azarmame9734

پروتوکل http کم و بیش به شکل Input/Output عمل میکنه

درخواست ارسال میشه
پروسس میشه
و ریسپانس برمیگرده

اگر دقت کنید PHP هم (در حالت پیش فرض) به شکل Synchronous کدها رو اجرا میکنه

برای همین یک راه مناسب برای استریمینگ استفاده از سوکت ها و WebRTC هست.

With WebRTC, you can add real-time communication capabilities to your application that works on top of an open standard. It supports video, voice, and generic data to be sent between peers, allowing developers to build powerful voice- and video-communication solutions.

https://fa.wikipedia.org/wiki/%D9%88%D8%A8%E2%80%8C%D8%A2%D8%B1%D8%AA%DB%8C%E2%80%8C%D8%B3%DB%8C


اما در مورد PHP:
برای انجام این کار در PHP به یک سیستم نیاز داریم تا کدهای ما رو به حالت Asynchronous یا نامتقارن اجرا کنه.. تا بتونیم قابلیت های real-time رو پیاده سازی کنیم

اجرای کد ها به شکل async در زبان PHP به شکلی ممکنه..
در PHP هم میتونیم Event-loop داشته باشیم و هر Event هم یک Handler برای خودش داشته باشه
پس در اون حالت کاملا میشه کدهای async رو اجرا کرد
چیزی شبیه به کاری که NodeJS داره انجام میده.

این ویژگی باعث میشه در کنار Event-Loop :

  • همچنین Promise ها رو داشته باشیم
  • بتونیم Streaming رو هم داشته باشیم
  • به لصف نسخه ۷ حالا Generator ها رو هم داریم
  • که نهایتا باعث میشه بتونیم ویژگی هایی که نیاز به Non-Blocking Input/Output دارند رو پیاده سازی کنیم

این تغییر رویه باعث بهبود چشم گیری در پرفرمنس زبان میشه (۵-۱۰ برابر) اما از طرفی انحنای یادگیری پیچیده تری داره.


نتیجه کلی:
زبان PHP در طی سالها به نظرم در ۲ زمینه ضعف داشته:

  • موجود نبودن non-blocking I/O و ویژگی های async
  • ضعف در اجرای کدهای CPU-Intensive

مورد اول رو که بررسی کردیم. این ویژگی هنوز به شکل رسمی در این زبان قرار نگرفته; اما پکیج هایی نوشته شده که این کار رو ممکن میکنند.

مورد دوم هم به لطف JIT Compiler در نسخه ۸ .. برطرف میشه. چون با JIT میتونیم کدها رو مستقیما به کد ماشین تبدیل کنیم.

حالا سوال اصلی اینه که:
استفاده از چه معماری و نهایتا چه پلتفرم و زبانی ، برای پروژه شما با ویژگی های خاصش مناسب تره.
وگرنه این روزها تمام زبان ها در حال رقابت برای بقا هستند و هر روز یک ویژگی از سایر رقبا رو به سیستم اضافه میکنند.


mmjvox
تخصص : QML,Objective-C,Qt/C++,Webasse...
@mmdjv.kh94 4 سال پیش آپدیت شد
1

حواستون باشه اگه سوکت رو انتخاب می کنید برای صوت و تصویر بهتره از udp socket استفاده کنید نه websocket یا tcp socket


محمد یاراحمدی
تخصص : توسعه دهنده لاراول
@yarahmadi 4 سال پیش مطرح شد
0

این پکیج کارت رو راه میندازه ویدیو استریم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام