نحوه ی دریافت url ویدیو های آپلود شده روی سرویس VOD

سلام و احترام خدمت همه ی دوستان

من دارم از سرویس ویدیویی استفاده میکنم، طبق مستند سایت، برای آپلود ویدیو با استفاده از api، باید مراحل زیر رو به ترتیب طی کنیم: (قبلش api key گرفتیم و token رو ساختیم)

  1. ابتدا باید یه درخواست به همراه metadata ویدیوی مورد نظر ارسال کنیم تا سرور ابری یه جای خاص رو برای ویدیوی ما روی سرور در نظر بگیره. که در ازاش یه location توی response header بر میگردونه.
  2. با استفاده از fileId که توی قسمت location از response header قسمت قبل بود، یه درخواست patch میدیم که با استفاده از پروتکل tus فایل رو آپلود کنه.
  3. وقتی فایل آپلود شد، اصطلاحاً draft میشه، پس باید به endpoint زیر یه درخواست بدیم و file_id رو براش بفرستیم تا فایل draft شده رو به زیرمجموعه ی ویدیوهامون اضافه کنه:
    {{baseUrl}}/channels/:channel/videos

تو این مرحله فایل ویدیویی ما میره توی صف download و convert. (اگه تا اینجا چیزی رو اشتباه گفتم بهم بگین)

خب تا اینجا همه چیز خوب بود.
اما مسئله اینجاست که من میخوام بلافاصله وقتی ویدیو آپلود شد، video_url ش رو بگیرم و استفاده کنم. مثلاً توی ckEditor وقتی ویدیوم رو آپلود کردم و مراحلی که بالا ذکر کردم طی شد، video_url ش رو بگیرم و بدم به src تگ video اچ تی ام ال 5.
مشکل چیه؟
اینه که توی سرور ابری، یه ویدیو از زمان آپلود شدن status های مختلفی به خودش میگیره، مثلاً اولش میشه: download_queue، بعد میشه downloading، بعد میشه convert_queue و … تا زمانی که میرسه به حالت complete.
و تا زمانی که complete نشده مقدار video_url براش ایجاد نشده (یعنی null هست).
و من باید از زمانی که ویدیو با موفقیت آپلود میشه، تا زمانی که status ش سمت سرور به حالت complete در بیاد، صبر کنم. و مدت زمانی هم که باید صبر کنم مشخص نیست. یه بار یک دقیقه هست، یه بار هشتاد ثانیه ست و … .

من دارم جایی رو اشتباه میکنم؟
و اینکه آیا ایده ای دارین که مشکل من رو حل بکنه؟

(من فعلاً تنها راه حلی که به ذهنم رسیده اینه که از زمان آپلود شدن ویدیو به روش polling یه سری interval بذارم و هر چند ثانیه یه بار وضعیت ویدیوم روی سرور ابری رو چک کنم و هر وقت که status به حالت complete در اومد کارم رو ادامه بدم، اما فکر میکنم این کار bad practice باشه)

1 پسندیده

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

1 پسندیده

خیلی خیلی ممنونم از پاسختون،

من یه سوال برام پیش اومده،
از اونجایی که فکر میکنم این نیازمندی من، موضوع مبتلا بهی باشه، یعنی احتمالاً خیلی از وبسایت های مشتری ابر آروان هستن که توی سایتشون یه عالمه ویدیو دارن و میخوان با استفاده از api اونها رو روی سرور ابری آپلود و استریم کنن،

سوالم اینه که آیا همه ی اونها هم دارن از interval استفاده میکنن واسه مدیریت این شرایط؟
یعنی راه حل بهتری وجود نداره؟