لبث فيديو مباشر، عليك أولاً إنشاء كائن LiveVideo
. يمثل كائن LiveVideo
البث، ويمكنك تعديل خصائص الكائن للتحكم في إعدادات البث. عند الإنشاء، سترجع API معرف الكائن LiveVideo
وعنوان URL البث، والذي يمكنك إدخاله في برنامج الترميز واستخدام بيانات البث للكائن LiveVideo
.
في 10 يونيو 2024، ستطلق Meta متطلبات جديدة يجب الوفاء بها قبل أن يتم نشر الحساب على فيسبوك. المتطلبات الجديدة هي كما يلي:
للبث في الكائن User
، احصل على رمز وصول المستخدم مع الإذن publish_video
وأرسل الطلب إلى:
POST /<USER_ID>/live_videos?status=LIVE_NOW
راجع عنصر الربط /live_videos
للتعرف على معلمات سلسلة الاستعلام الإضافية التي يمكنك تضمينها لوصف البث، مثل العنوان والوصف.
عند اختبار استدعاء API، يمكنك تضمين المعلمة access_token
وتعيينها على رمز الوصول. مع ذلك، عند إجراء استدعاءات آمنة من التطبيق، استخدم فئة رمز الوصول.
عند نجاح العملية، ستنشئ API كائن LiveVideo
للمستخدم وسترجع secure_stream_url
وid
الكائن LiveVideo
. سيظهر البث في منشور بالملف الشخصي للمستخدم بمجرد إرسال البيانات إلى عنوان URL الآمن للبث. يمكنك الاستعلام عن الكائن LiveVideo
لمراقبة حالة البث ولإنهاء البث.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<USER_ID>/live_videos
?status=LIVE_NOW
&title=Today%27s%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20today."
{ "id": "1953020644813104", //<LIVE_VIDEO_ID> "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
لبث فيديو بث مباشر في Page
، احصل على رمز وصول الصفحة الخاص بمسؤول الصفحة مع الإذنين pages_read_engagement
وpages_manage_posts
، ثم أرسل طلبًا إلى:
POST /<PAGE_ID>/live_videos?status=LIVE_NOW
راجع عنصر الربط /live_videos
للتعرف على معلمات سلسلة الاستعلام الإضافية التي يمكنك تضمينها لوصف البث، مثل العنوان والوصف.
عند اختبار استدعاء API، يمكنك تضمين المعلمة access_token
وتعيينها على رمز الوصول. مع ذلك، عند إجراء استدعاءات آمنة من التطبيق، استخدم فئة رمز الوصول.
عند نجاح العملية، ستنشئ API كائن LiveVideo
للصفحة وسترجع secure_stream_url
وid
الكائن LiveVideo
. سيظهر البث في منشور بالصفحة بمجرد إرسال البيانات إلى عنوان URL الآمن للبث. يمكنك الاستعلام عن الكائن LiveVideo
لمراقبة حالة البث ولإنهاء البث.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<PAGE_ID>/live_videos
?status=LIVE_NOW
&title=Today%27s%20Page%20Live%20Video
&description=This%20is%20the%20live%20video%20for%20the%20Page%20for%20today"
{ "id": "1953020644813108", //<LIVE_VIDEO_ID> "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url":"rtmps://rtmp-api.facebook..." }
يمكنك قراءة كائن LiveVideo
للحصول على عناوين URL لمعاينة البث والبيانات المتعلقة بجودة البث، مثل معدلات البت ومعدلات الإطارات. يتم تحديث بيانات جودة البث كل ثانيتين، لذلك يمكنك تقييد الاستعلامات بحيث لا تتجاوز استعلامًا واحدًا كل ثانيتين. سيتم اكتشاف مهلة البث والإبلاغ عنها بعد 4 ثوانٍ من عدم تلقي البيانات.
لقراءة كائن LiveVideo
، احصل على رمز وصول الصفحة أو المستخدم المناسب مع الإذن publish_video
، ثم أرسل استعلامًا إلى:
GET /<LIVE_VIDEO_ID>?fields=<COMMA_SEPARATED_LIST_OF_FIELDS>
استخدم المعلمة {fields}
لتحديد حقول الكائن LiveVideo التي تريد إرجاعها. على سبيل المثال، فيما يلي طلب للحصول على ingest_streams
في الكائن LiveVideo
الذي يتضمن بيانات حول جودة البث:
curl -i -X GET \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?fields=ingest_streams"
{ "ingest_streams": [ { "stream_id": "0", "stream_url": "rtmp://rtmp-api.facebook...", "secure_stream_url": "rtmps://rtmp-api.facebook...", "is_master": true, "stream_health": { "video_bitrate": 4024116, "video_framerate": 60, "video_gop_size": 2000, "video_height": 720, "video_width": 1280, "audio_bitrate": 128745.4921875 }, "id": "1914910145231512" // <INGEST_STREAM_ID> } ], "id": "<LIVE_VIDEO_ID>" }
خصائص الاستجابة
اسم الحقل | الوصف |
---|---|
audio_bitrate | وحدات البت لكل ثانية في بث الصوت الوارد. |
is_master | تظهر القيمة |
secure_stream_url | عنوان URL الآمن لاستيعاب RTMPS لدى معرف فيديو البث المباشر الذي يتم الاستعلام عنه. |
stream_url | عنوان URL لاستيعاب RTMP لدى معرف فيديو لدى البث المباشر الذي يتم الاستعلام عنه. |
video_bitrate | وحدات البت لكل ثانية في بث الفيديو الوارد. |
video_framerate | معدل الإطارات لكل ثانية في بث الفيديو الوارد. |
video_gop_size | حجم GOP (مجموعة من الصور) بالمللي ثانية. |
video_height | ارتفاع إطار الفيديو الوارد بالبيكسل. |
video_width | عرض إطار الفيديو الوارد بالبيكسل. |
لإنهاء البث، قم بإيقاف بث بيانات فيديو البث المباشر من برنامج الترميز لديك إلى عنوان URL للبث أو أرسل طلبًا إلى:
POST /<LIVE_VIDEO_ID>?end_live_video=true
يؤدي ذلك إلى تعيين حالة الكائن LiveVideo
على VOD
، وحفظه كفيديو حسب الطلب (VOD) بحيث يمكن عرضه لاحقًا.
عند نجاح العملية، سترجع API معرف الكائن LiveVideo
.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?end_live_video=true"
{ "id": "10213570560993813" //<LIVE_VIDEO_ID> }
يمكنك إجراء عملية تشغيل GET
بمعرف LiveVideo لتأكيد أنه تم تعيين حالته على VOD
:
GET /<LIVE_VIDEO_ID>?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" //<LIVE_VIDEO_ID> }
لحذف عملية بث تم إنهاؤها وحفظها كفيديو حسب الطلب (VOD)، أرسل طلبًا إلى:
DELETE /<LIVE_VIDEO_ID>
curl -i -X DELETE \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>"
{ success: true }
يمكن أن يكون هناك تأخير بسيط قبل البث المباشر بينما نقوم بفك تشفير بيانات البث الأولية ومعالجة أي طلبات API مرتبطة. يمكن أن يجعل ذلك من الصعب على أصحاب المواهب الموجودين ضمن البث معرفة وقت بدء البث بالضبط. لتجنب هذه المشكلة، يمكن تعيين كائنات LiveVideo لقبول بيانات البث ولكن لن يتم البث المباشر للجماهير حتى يتم اكتشاف رسالة RTMP للبث المباشر ضمن بيانات البث نفسها. هذا يسمح لأي شخص قادر على معاينة البث بعرضه، بينما يتم السماح لبرنامج تشفير البث بالتحكم بدقة في كل من وقت بدء البث المباشر للجمهور وأول إطار يتم عرضه على الجمهور.
لتمكين البث المباشر دقيق الإطارات، أولاً يمكنك إنشاء كائن LiveVideo كما تفعل عادةً وقم بتعيين الحالة على PREVIEW. بمجرد إنشاؤه، يمكنك الاستعلام عن الكائن LiveVideo وطلب الحقل secure_stream_url مع الحقول المتداخلة التالية:
secure_stream_url.inband_go_live(require_inband_signal)
هذا سيعمل على تمكين البث المباشر دقيق الإطارات في الكائن LiveVideo وستستجيب API بعنوان URL آمن جديد للبث والذي يمكنك حينها البث عليه. يمكنك تجاهل عنوان URL الآمن للبث الأولي الذي تم إرساله إليك عند إنشاء الكائن LiveVideo لأول مرة.
سيظهر البث المباشر للجمهور بعد (1) تعيين حالة البث على LIVE (عبر استدعاء Graph API أو نشر المستخدم من Live Producer) و(2) يرسل برنامج التشفير رسالة RTMP البث المباشر.
حزمة AMF0 (النوع 0x12) تحتوي على:
onGoLive
timestamp
لمزيد من المعلومات، راجع مواصفات RTMP وAMF0.
عينة من طلب تمكين البث المباشر دقيق الإطارات في LiveVideo.
curl -i -X GET \
"https://graph.facebook.com/v21.0
/LIVE_VIDEO_ID?fields=secure_stream_url.inband_go_live(require_inband_signal)&access_token=12345..."
عنوان URL آمن للبث لكائن LiveVideo مع تمكين البث المباشر دقيق الإطارات.
{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }
للحصول على بيانات رمز الخطأ المرتبطة بالبث، أرسل طلبًا إلى:
GET /<LIVE_VIDEO_ID>?fields=errors
ستستجيب API من خلال error code
وtype
وmessage
وtimestamp
.
curl -i -X GET \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?fields=errors"
{ "errors": { "data": [ { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 1969004, "error_type": "stream", "error_message": "Video signal lost", "creation_time": "2018-12-05T23:58:52+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" }, { "error_code": 0, "error_type": "info", "error_message": "Live Service received the video signal", "creation_time": "2018-12-05T23:58:02+0000" } ] }, "id": "{your-live-video-id}" }
error_subcode | ملخص الخطأ | الوصف |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | انتهاك حقوق نشر البث المباشر | تم إيقاف فيديو البث المباشر لديك نظرًا لأنه قد يحتوي على محتوى صوتي أو مرئي ينتمي إلى صفحة أخرى. |
VIDEO__CREATE_FAILED | مشكلة في التحميل | حدثت مشكلة ولم يتم تحميل الفيديو. يُرجى إعادة المحاولة. |
LIVE_VIDEO__DELETE_FAILED | لم يتم حذف فيديو البث المباشر | حدثت مشكلة ولم نتمكّن من حذف فيديو البث المباشر. يُرجى إعادة المحاولة. |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | غير مسموح بالتعديل عبر API الفيديو أثناء البث المباشر | غير مسموح بتعديل فيديو البث المباشر باستخدام واجهة API تعديل الفيديو. استخدم معرف فيديو البث المباشر. |
LIVE_VIDEO__LIVE_STREAM_ERROR | البث العام | حدث خطأ أثناء البث |
LIVE_VIDEO__NOT_EXIST | فيديو البث المباشر غير موجود | لم يعد فيديو البث المباشر الذي تحاول الوصول إليه موجودًا في النظام بعد الآن. |
LIVE_VIDEO__PRIVACY_REQUIRED | إعداد الخصوصية مطلوب | تحتاج إلى إعداد الخصوصية قبل بدء البث المباشر. |
Code | Subcode | Message | Type | Mitigation messaging |
---|---|---|---|---|
200 | 1363120 | Permissions error | OAuthException | You’re not eligible to go live Your profile needs to be at least 60 days old before you can go live on Facebook. Learn more at https://www.facebook.com/business/help/167417030499767?id=1123223941353904 |
200 | 1363144 | Permissions error | OAuthException | You’re not eligible to go live You need at least 100 followers before you can go live from your profile. Learn more at https://www.facebook.com/business/help/167417030499767?id=1123223941353904 |