Untuk menyiarkan video siaran langsung, Anda harus terlebih dahulu membuat objek LiveVideo
. Objek LiveVideo
merepresentasikan siaran, dan Anda dapat memanipulasi properti objek untuk mengontrol pengaturan siaran. Setelah dibuat, API akan menghasilkan ID objek LiveVideo
dan sebuah URL streaming, yang dapat Anda masukkan ke enkoder dan gunakan untuk melakukan streaming data ke objek LiveVideo
.
Pada tanggal 10 Juni 2020, Meta meluncurkan persyaratan baru yang harus dipenuhi sebelum sebuah akun dapat melakukan siaran langsung di Facebook. Persyaratan barunya adalah sebagai berikut:
Untuk menyiarkan pada objek User
, dapatkan token akses Pengguna yang memiliki izin publish_video
dan kirimkan permintaan ke:
POST /<USER_ID>/live_videos?status=LIVE_NOW
Baca /live_videos
untuk melihat parameter string kueri lain yang dapat Anda sertakan untuk mendeskripsikan siaran, misalnya judul dan deskripsi.
Saat menguji panggilan API, Anda dapat menyertakan parameter access_token
ke token akses Anda. Namun, saat melakukan panggilan aman dari aplikasi Anda, gunakan kelas token akses.
Setelah berhasil, API akan membuat objek LiveVideo
pada Pengguna dan menampilkan secure_stream_url
dan id
objek LiveVideo
. Siaran akan muncul dalam postingan pada profil Pengguna segera setelah Anda mengirimkan data ke URL streaming yang aman. Anda dapat mengkueri objek LiveVideo
untuk memantau kesehatan siaran dan mengakhiri siaran.
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..." }
Untuk menyiarkan siaran langsung video pada sebuah Page
, dapatkan token akses Halaman dari admin Halaman yang memiliki izin pages_read_engagement
dan pages_manage_posts
, kemudian kirimkan permintaan ke:
POST /<PAGE_ID>/live_videos?status=LIVE_NOW
Baca /live_videos
untuk melihat parameter string kueri lain yang dapat Anda sertakan untuk mendeskripsikan siaran, misalnya judul dan deskripsi.
Saat menguji panggilan API, Anda dapat menyertakan parameter access_token
ke token akses Anda. Namun, saat melakukan panggilan aman dari aplikasi Anda, gunakan kelas token akses.
Setelah berhasil, API akan membuat objek LiveVideo
pada Halaman dan menampilkan secure_stream_url
dan id
objek LiveVideo
. Siaran akan muncul dalam postingan pada Halaman segera setelah Anda mengirimkan data ke URL streaming yang aman. Anda dapat mengkueri objek LiveVideo
untuk memantau kesehatan siaran dan mengakhiri siaran.
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..." }
Anda dapat membaca objek LiveVideo
untuk mendapatkan URL pratinjau streaming siaran dan data kesehatan streaming, seperti bitrate dan framerate. Data kesehatan streaming dimuat ulang setiap 2 detik, jadi batasi kueri hingga tidak lebih dari sekali setiap 2 detik. Batas waktu tunggu streaming akan terdeteksi dan dilaporkan saat tidak ada data yang diterima setelah 4 detik.
Untuk membaca objek LiveVideo
, dapatkan token akses Pengguna atau Halaman yang sesuai dan memiliki izin publish_video
, lalu kirimkan kueri ke:
GET /<LIVE_VIDEO_ID>?fields=<COMMA_SEPARATED_LIST_OF_FIELDS>
Gunakan parameter {fields}
untuk menentukan kolom objek LiveVideo yang ingin Anda hasilkan. Sebagai contoh, berikut ini permintaan untuk mendapatkan ingest_streams
pada objek LiveVideo
, yang menyertakan data tentang kesehatan streaming:
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>" }
Properti Tanggapan
Nama Kolom | Deskripsi |
---|---|
audio_bitrate | Bit per detik dari streaming audio yang masuk. |
is_master |
|
secure_stream_url | URL penyerapan RTMPS yang aman untuk ID Video Siaran Langsung yang dikueri. |
stream_url | URL penyerapan RTMP untuk ID Video Siaran Langsung yang dikueri. |
video_bitrate | Bit per detik dari streaming video yang masuk. |
video_framerate | Frame per detik dari streaming video yang masuk. |
video_gop_size | Ukuran GOP (sekelompok gambar) dalam milidetik. |
video_height | Tinggi frame video yang masuk dalam satuan piksel. |
video_width | Lebar frame video yang masuk dalam satuan piksel. |
Untuk mengakhiri siaran, hentikan streaming data video siaran langsung dari enkoder Anda ke URL streaming atau kirimkan permintaan ke:
POST /<LIVE_VIDEO_ID>?end_live_video=true
Ini mengatur status objek LiveVideo
ke VOD
dan menyimpannya sebagai video-on-demand (VOD) agar bisa ditonton nanti.
Setelah berhasil, API akan menayangkan dengan ID objek LiveVideo
.
curl -i -X POST \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>?end_live_video=true"
{ "id": "10213570560993813" //<LIVE_VIDEO_ID> }
Anda dapat menjalankan operasi GET
pada ID LiveVideo untuk mengonfirmasi bahwa statusnya telah diatur ke VOD
:
GET /<LIVE_VIDEO_ID>?fields=status
{ "status": "VOD", // Broadcast ended, saved as VOD "id": "10213570560993813" //<LIVE_VIDEO_ID> }
Untuk menghapus siaran yang telah selesai dan menyimpannya sebagai VOD, kirimkan permintaan ke:
DELETE /<LIVE_VIDEO_ID>
curl -i -X DELETE \
"https://graph.facebook.com/v21.0
/<LIVE_VIDEO_ID>"
{ success: true }
Mungkin ada sedikit penundaan sebelum siaran ditayangkan saat kami mendekode data streaming awalnya dan memproses permintaan API terkait. Hal ini dapat mempersulit orang yang sedang siaran untuk mengetahui dengan tepat kapan siaran telah dimulai. Untuk menghindari masalah ini, objek LiveVideo dapat diatur untuk menerima data streaming tetapi tidak ditayangkan ke pemirsa sampai pesan RTMP siaran langsung terdeteksi dalam data streaming itu sendiri. Hal ini memungkinkan siapa saja yang dapat melihat cuplikan siaran untuk melihatnya, sambil mengizinkan pengenkode streaming untuk secara tepat mengontrol waktu siaran langsung bagi pemirsa dan frame pertama yang dilihat pemirsa.
Untuk mengaktifkan siaran langsung dengan frame akurat, pertama-tama buat objek LiveVideo seperti biasa dan atur statusnya ke PREVIEW. Setelah dibuat, kueri objek LiveVideo dan minta kolom secure_stream_url dengan kolom bersarang berikut:
secure_stream_url.inband_go_live(require_inband_signal)
Ini akan mengaktifkan siaran langsung dengan frame akurat pada objek LiveVideo dan API akan menanggapi dengan URL streaming aman baru yang kemudian dapat Anda gunakan untuk streaming. Anda dapat mengabaikan URL streaming aman awal yang dikirimkan kepada Anda saat pertama kali membuat objek LiveVideo.
Siaran akan ditayangkan secara langsung dan dapat dilihat oleh pemirsa setelah (1) status siaran diatur ke LIVE (melalui panggilan Graph API atau pengguna yang menerbitkan dari Live Producer) dan (2) pengenkode mengirimkan pesan RTMP siaran langsung.
Paket AMF0 (jenis 0x12) berisi:
onGoLive
timestamp
Untuk informasi selengkapnya, lihat spesifikasi RTMP dan AMF0.
Contoh permintaan untuk mengaktifkan siaran langsung dengan frame akurat pada 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..."
Amankan URL streaming untuk objek LiveVideo dengan mengaktifkan siaran langsung dengan frame akurat.
{ "secure_stream_url": "rtmps://rtmp-pc.facebook.com:443/rtmp/LIVE_VIDEO_ID?s_bl=1&s_gl=1&...", "id": "LIVE_VIDEO_ID" }
Untuk mendapatkan data kode kesalahan yang terkait dengan siaran, kirimkan permintaan ke:
GET /<LIVE_VIDEO_ID>?fields=errors
API akan menanggapi dengan error code
, type
, message
, dan 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 | Ringkasan Kesalahan | Deskripsi |
---|---|---|
COPYRIGHT__LIVE_COPYRIGHT_VIOLATION | Pelanggaran Hak Cipta Siaran Langsung | Siaran langsung Anda telah dihentikan karena mungkin mengandung konten audio atau visual yang dimiliki Halaman lain. |
VIDEO__CREATE_FAILED | Masalah Pengunggahan | Terjadi masalah dan video Anda tidak diunggah. Coba lagi. |
LIVE_VIDEO__DELETE_FAILED | Video Siaran Langsung Tidak Dihapus | Terjadi masalah dan kami tidak dapat menghapus video siaran langsung Anda. Coba lagi. |
LIVE_VIDEO__EDIT_API_NOT_ALLOWED | Mengedit Melalui API Video Tidak Diizinkan Saat Siaran Langsung | Menghapus siaran langsung menggunakan API Edit Video tidak diizinkan. Gunakan ID video siaran langsung. |
LIVE_VIDEO__LIVE_STREAM_ERROR | Streaming Umum | Terjadi kesalahan saat streaming |
LIVE_VIDEO__NOT_EXIST | Video Siaran Langsung Tidak Ada | Video siaran langsung yang coba Anda akses tidak ada lagi di sistem. |
LIVE_VIDEO__PRIVACY_REQUIRED | Pengaturan Privasi Diperlukan | Anda perlu mengatur privasi sebelum menayangkan siaran langsung. |
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 |