واجهة برمجة تطبيقات YouTube JS:اكتشاف "تم تعطيل التضمين"

StackOverflow https://stackoverflow.com/questions/859296

  •  21-08-2019
  •  | 
  •  

سؤال

استخدام واجهة برمجة تطبيقات youtube javascript (http://code.google.com/apis/youtube/js_api_reference.html)، أحاول السماح للمستخدم بتضمين مقطع فيديو في بعض المحتوى الذي ينشئه في تطبيقي.لقد نجحت في كل شيء، باستثناء القدرة على اكتشاف حالة عدم السماح بالتضمين في الفيديو والتعامل معها.

حاليًا، يقوم المشغل بتحميل وعرض صورة مصغرة للفيديو غير المسموح به، ولا يعطي خطأ إلا عندما يحاول المستخدم تشغيله.وهذا أمر سيء لأن المستخدم لا يجوز له تشغيل الفيديو قبل حفظ/إرسال المحتوى الخاص به.أود أن أكتشف بشكل استباقي أن الفيديو غير مسموح بتضمينه، وأن أعرض رسالة مفيدة للمستخدم.

الحل الوحيد الذي يمكنني رؤيته هو تشغيله فعليًا (برمجيًا) ومعالجة الخطأ الذي يظهر عند تلك النقطة.

الحل البديل الحالي:

  1. تضمين المشغل (embedSWF)
  2. onYouTubePlayerReady():أضف مستمعي الأحداث onError onStateChange.
  3. onStateChange(newState):عند انتهاء تحميل الفيديو، حاول تشغيله.
    على سبيل المثالif (newState == 5 /* CUED */) { player.mute();player.playVideo();player.stopVideo();player.unMute();}
  4. خطأ (خطأ):إذا فشل تشغيل الفيديو في onStateChange، فسيتلقى خطأ هنا.

هل هناك طريقة أفضل؟

شكرًا!
-روب

هل كانت مفيدة؟

المحلول

يمكنك الحصول على خلاصة JSON لإدخال الفيديو هذا قبل تضمينه ومعرفة ما إذا كان "yt$format":5 موجودًا، وهو ملف SWF المضمن.لن يكون هناك إذا تم تعطيل التضمين.

http://gdata.youtube.com/feeds/api/videos/video_id?v=2&alt=json-in-script

نصائح أخرى

أعلم أن هذا ليس سؤالًا مباشرًا، ولكن في حالة تعثر شخص يستخدم PHP في هذه المشكلة، فهناك طريقة getNoEmbed() في Zend_Gdata_YouTube_VideoEntry.

مأخوذ من المستندات:

إذا كانت قيمة الإرجاع هي مثيل لـ Zend_Gdata_YouTube_Extension_NoEmbed, ، لا يمكن تضمين هذا الفيديو.

أعتقد أنك ربما تبحث عن videoSyndicated أو ال videoEmbeddable معامل.تقول وثائق API:

videoEmbeddable

تتيح لك المعلمة videoEmbeddable تقييد البحث على مقاطع الفيديو التي يمكن تضمينها في صفحة ويب فقط.إذا قمت بتحديد قيمة لهذه المعلمة، فيجب عليك أيضًا تعيين قيمة معلمة النوع للفيديو.

مرجع: https://developers.google.com/youtube/v3/docs/search/list#videoEmbeddable

videoSyndicated

تتيح لك المعلمة videoSyndicated تقييد البحث على مقاطع الفيديو التي يمكن تشغيلها خارج youtube.com فقط.إذا قمت بتحديد قيمة لهذه المعلمة، فيجب عليك أيضًا تعيين قيمة معلمة النوع للفيديو.

مرجع: https://developers.google.com/youtube/v3/docs/search/list#videoSyndicated

مثال نداء

مع كلاهما:

GET https://www.googleapis.com/youtube/v3/search?&part=snippet,statistics&videoSyndicated=true&videoEmbeddable=true&key=${yourKey}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top