I’ve spent some time recently working with the Facebook Live API and since this is a fairly new service which is being heavily promoted I thought it might be useful to share my experiences with it.
The aim was to build a tool that would pop up a message on the website when a channel goes live, and allow users to stream the live video on the site to keep them engaged without diverting traffic away.
Graph API Query
The Facebook Graph API is really powerful and rich in the depth of data that can be queried. Live videos are included in the regular videos query with a new attribute called “live_status” returned for each video. These statuses aren’t well documented, but the possible values are:
“LIVE” when a stream is currently live
“VOD” when a video was live, and is still available to view
I get the feeling that the graph API changes so rapidly that the documentation sometimes struggles to keep up. Several of the methods I had to figure out manually suing their Graph API explorer.
This is where things get confusing… The query returns an attribute called “embed_html” but Facebook advise against using this and instead using their client JS library to embed the video via the ID. Unfortunately I found this to be unreliable – in one case even though the video was marked as “embeddable=true” the video showed an error when I tried to embed it saying “This video could not be embedded”. For this reason, I reverted to using the embed_html property.
Unfortunately I discovered a limitation that live video cannot currently be embedded in iOS. Videos that were live can be streamed, and pre-recorded videos will stream. But not those that are live now. This is a shame, and is presumably something that Facebook will be working to fix soon but it’s an indication of how new this technology is.
There is also the issue on iOS that affects all embedded video that you cannot auto-play video, so users must click on the video thumbnail before it will begin to play.