Menyiarkan

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:

  • Akun Facebook Anda harus berusia minimal 60 hari
  • Halaman Facebook atau profil mode profesional harus memiliki minimal 100 pengikut

Menyiarkan pada Pengguna

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.

Contoh Permintaan

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."

Contoh Tanggapan

{
  "id": "1953020644813104",      //<LIVE_VIDEO_ID>
  "stream_url": "rtmp://rtmp-api.facebook...",
  "secure_stream_url":"rtmps://rtmp-api.facebook..."
}

Menyiarkan pada Halaman

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.

Contoh Permintaan

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"

Contoh Tanggapan

{
  "id": "1953020644813108",     //<LIVE_VIDEO_ID>
  "stream_url": "rtmp://rtmp-api.facebook...",
  "secure_stream_url":"rtmps://rtmp-api.facebook..."
}

Mendapatkan Data Streaming Siaran

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:

Contoh Permintaan

curl -i -X GET \
  "https://graph.facebook.com/v21.0/<LIVE_VIDEO_ID>?fields=ingest_streams"

Contoh Tanggapan

{
  "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 KolomDeskripsi
audio_bitrate

Bit per detik dari streaming audio yang masuk.

is_master

true jika ID Video Siaran Langsung yang dikueri adalah video yang sedang ditayangkan kepada pemirsa.

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.

Mengakhiri Siaran

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.

Contoh Permintaan

curl -i -X POST \
  "https://graph.facebook.com/v21.0/<LIVE_VIDEO_ID>?end_live_video=true"

Contoh Tanggapan

{
  "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

Contoh Tanggapan

{
  "status": "VOD",  // Broadcast ended, saved as VOD
  "id": "10213570560993813"    //<LIVE_VIDEO_ID>
}

Menghapus Siaran

Untuk menghapus siaran yang telah selesai dan menyimpannya sebagai VOD, kirimkan permintaan ke:

DELETE /<LIVE_VIDEO_ID>

Contoh Permintaan

curl -i -X DELETE \
 "https://graph.facebook.com/v21.0/<LIVE_VIDEO_ID>"

Contoh Tanggapan

{
  success: true
}

Siaran Langsung dengan Frame Akurat

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.

Struktur Pesan RTMP Siaran Langsung

Paket AMF0 (jenis 0x12) berisi:

  • string onGoLive
  • array ECMA (jenis 0x08) yang berisi pasangan nilai kunci tunggal:
    • Kunci: string (jenis 0x02) timestamp
    • Nilai: angka (jenis 0x00): cap waktu dari frame video pertama yang akan terlihat oleh publik

Untuk informasi selengkapnya, lihat spesifikasi RTMP dan AMF0.

Contoh Permintaan

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..."

Contoh Tanggapan

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"
}

Mendapatkan Data Kode Kesalahan

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.

Contoh Tanggapan

curl -i -X GET \
 "https://graph.facebook.com/v21.0/<LIVE_VIDEO_ID>?fields=errors"

Contoh Tanggapan

{
  "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}"
}

Kode kesalahan umum API Video Siaran Langsung

error_subcodeRingkasan KesalahanDeskripsi
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.

Kode kesalahan izin

CodeSubcodeMessageTypeMitigation 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