Luồng dự phòng

Bạn có thể đồng thời phát dữ liệu video trực tiếp dự phòng đến một nội dung phát video trực tiếp. Nếu không phát được luồng chính, chúng tôi sẽ tự động chuyển sang luồng dự phòng để nội dung phát video trực tiếp của bạn vẫn có thể tiếp tục một cách liền mạch. Nội dung mà bạn phát sẽ vẫn sử dụng luồng dự phòng trừ khi bạn chuyển thủ công trở lại luồng chính hoặc luồng chính đã tiếp tục phát trong khi luồng dự phòng không phát được.

Để sử dụng luồng dự phòng cùng với nội dung phát video trực tiếp, bạn phải bật tính năng phát dự phòng khi tạo đối tượng LiveVideo của nội dung phát hoặc bật tính năng này trên đối tượng LiveVideo trước khi đối tượng nhận dữ liệu phát.

Bật tính năng phát dự phòng khi tạo LiveVideo

Để bật tính năng phát dự phòng khi bạn tạo đối tượng LiveVideo của nội dung phát, hãy thêm thông số chuỗi truy vấn enable_backup_ingest=true vào truy vấn của bạn.

Chẳng hạn như để tạo LiveVideo khi bật tính năng phát dự phòng cho một Người dùng:

POST /{user-id}/live_videos ?status=LIVE_NOW &enable_backup_ingest=true &access_token={access-token}

Truy vấn này sẽ trả về 2 URL, 1 cho luồng chính và 1 cho luồng dự phòng (luồng phụ):

{ "id": "{live-video-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "stream_secondary_urls": [ "{stream-secondary-urls}" ], "secure_stream_secondary_urls": [ "{secure-stream-secondary-urls}" ] }

Sử dụng secure_stream_url cho luồng thu nhận chính và secure_stream_secondary_urls cho luồng thu nhận dữ phòng. Bạn có thể phát dữ liệu dự phòng đến đối tượng LiveVideo bất cứ lúc nào trong quá trình phát.

Ví dụ về yêu cầu cURL

curl -i -X POST \ "https://graph.facebook.com/362629830945302/live_videos ?enable_backup_ingest=true &access_token=EAAI4b..."

Ví dụ về phản hồi

{ "id": "10215840463339953", "stream_url": "rtmps://rtmp.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbxMhT-cq73GTdpuPLo", "secure_stream_url": "rtmps://rtmp.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbxMhT-cq73GTdpuPLo", "stream_secondary_urls": [ "rtmp://rtmps.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api&a=AbzhD2fKJw1Uw7JQjFc" ], "secure_stream_secondary_urls": [ "rtmps://rtmps.facebook.com/rtmp/10215840463339953?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api&a=AbzhD2fKJw1Uw7JQF80" ] }

Bật tính năng phát dự phòng trên đối tượng LiveVideo hiện có

Bạn có thể bật tính năng phát dự phòng trên đối tượng LiveVideo hiện có, miễn là đối tượng này chưa nhận bất kỳ dữ liệu phát video trực tiếp nào. Để làm vậy, hãy gửi yêu cầu POST đến cạnh /input_streams của LiveVideo. Ví dụ:

POST /{live-video-id}/input_streams &access_token={access-token}

Thao tác này sẽ trả về ID của LiveVideo:

{ "id": "{live-video-id}" }

Sau khi bật, bạn có thể [lấy URL của luồng chính và luồng dự phòng] từ đối tượng LiveVideo.

Ví dụ về yêu cầu cURL

curl -i -X POST \ "https://graph.facebook.com/10215840463339953/input_streams &access_token=EAAI4b..."

Ví dụ về phản hồi

{ "id": "10215840463339953" }

Chuyển đổi thủ công giữa các luồng

Bạn có thể chuyển đổi thủ công giữa luồng chính và luồng dự phòng của LiveVideo bằng cách gửi yêu cầu đến:

POST /{live-video-id} ?master_ingest_stream_id={master-ingest-stream-id} &access_token={access-token}

Giá trị {master-ingest-stream-id} là một boolean; 0 đại diện cho luồng thu nhận chính, còn 1 đại diện cho luồng thu nhận dự phòng.

Ví dụ về yêu cầu cURL

curl -i -X POST \ "https://graph.facebook.com/10215840463339953 ?master_ingest_stream_id=1 &access_token=EAAI4b..."

Lấy URL của luồng chính và luồng dự phòng

Bạn có thể đọc trường thông tin ingest_streams của LiveVideo để lấy các URL của luồng chính và luồng dự phòng:

GET /{live-video-id} ?fields=ingest_streams &acess_token={access-token}

Thao tác này sẽ trả về tình trạng của luồng thu nhận, cũng như các URL luồng cho luồng chính và luồng dự phòng (nếu có) trên LiveVideo:

{ "ingest_streams": [ { "stream_id": "{stream-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "is_master": {is-master}, "stream_health": {stream-health}, "id": "{id}" }, { "stream_id": "{stream-id}", "stream_url": "{stream-url}", "secure_stream_url": "{secure-stream-url}", "is_master": {is-master}, "stream_health": {stream-health}, "id": "{id}" } ], "id": "10215840874550233" }

Ví dụ về yêu cầu cURL

curl -i -X GET \ "https://graph.facebook.com/10215840463339953 ?fields=ingest_streams &access_token=EAAI4b..."

Ví dụ về phản hồi

{ "ingest_streams": [ { "stream_id": "0", "stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbyvsHKGRrur_sZOeuo", "secure_stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=0&s_vt=api&a=AbyvsHKGRrur_sZOF08", "is_master": true, "stream_health": { "video_bitrate": 2304481.75, "video_framerate": 27.586206436157, "video_gop_size": 2000, "video_height": 700, "video_width": 1120, "audio_bitrate": 118149.8828125 }, "id": "10215840874630235" }, { "stream_id": "1", "stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api_dev&a=AbySai39Wr08FKpUYw0", "secure_stream_url": "rtmps://live-api.facebook.com/rtmp/10215840874550233?s_bl=1&s_l=1&s_sml=3&s_sw=1&s_vt=api_dev&a=AbySai39Wr08FKpUv3M", "is_master": false, "stream_health": { "video_bitrate": 1866942.625, "video_framerate": 22.338048934937, "video_gop_size": 2000, "video_height": 700, "video_width": 1120, "audio_bitrate": 95675.3515625 }, "id": "10215840874670236" } ], "id": "10215840874550233" }