Skip to content
Advertisement

Determine if YouTube video is widescreen?

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)

martial arts in 4:3

and one in 16:9:

https://www.youtube.com/watch?v=7O2Jqi-LhEI (a new workout video)

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.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement