I would like to know with certainty if a YouTube video is widescreen or not using the v3 API. There are many old videos that have a 4:3 ratio, so I need to detect this.
This was possible with API v2, but it is officially retired now. Here are the API v3 docs.
An API call looks something like this:
https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&part=snippet&key=[DEVELOPERKEY]
Also, the thumbnail data always returns dimensions of 4:3, so that doesn’t help. Here is an example:
[thumbnails] => Array ( [default] => Array ( [url] => https://i.ytimg.com/vi/nnnnnnnnn/default.jpg [width] => 120 [height] => 90 ) ... )
Any ideas?
(I’m currently hacking this by analyzing pixels in the thumbnails where tell-tale black bars on 4:3 videos will be.)
Here is a sample video in 4:3 ratio:
https://www.youtube.com/watch?v=zMJ-Dl4eJu8 (old martial arts video)
and one in 16:9:
https://www.youtube.com/watch?v=7O2Jqi-LhEI (a new workout video)
Update: One promising suggestion was to explore fileDetails.videoStreams[].aspectRatio
but it seems that this is only available to the video owner. Otherwise requesting fileDetails
results in
The request cannot access user rating information. This error may occur because the request is not properly authorized
Advertisement
Answer
If you’re open to using a different method other than V3 of the API, then I believe it is possible via the oEmbed API.
http://www.youtube.com/oembed?url={VIDEO_URL}&format=json
Like so:
http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=zMJ-Dl4eJu8&format=json
Would produce:
{ "provider_url":"https://www.youtube.com/", "thumbnail_url":"https://i.ytimg.com/vi/zMJ-Dl4eJu8/hqdefault.jpg", "thumbnail_height":360, "height":344, "type":"video", "version":"1.0", "html":"u003ciframe width="459" height="344" src="https://www.youtube.com/embed/zMJ-Dl4eJu8?feature=oembed" frameborder="0" allowfullscreenu003eu003c/iframeu003e", "author_name":"hadronica2", "width":459, "provider_name":"YouTube", "author_url":"https://www.youtube.com/user/hadronica2", "title":"Aikido - Kazuo Chiba sensei - 1u00ba part", "thumbnail_width":480 }
In the examples you’ve given, the output was as follows:
http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=zMJ-Dl4eJu8&format=json
Width: 459 Height: 344 Ratio: w/h = 1.3343 = 4:3 (ish)
http://www.youtube.com/oembed?url=https://www.youtube.com/watch?v=zMJ-Dl4eJu8&format=json
Width: 480 Height: 270 Ratio: w/h = 1.7777 = 16/9
This appears to work in the examples you’ve provided.