Each YouTube video has four generated images. They are predictably formatted as follows:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
The first one in the list is a full size image and others are thumbnail images. The default thumbnail image (i.e., one of 1.jpg
, 2.jpg
, 3.jpg
) is:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
For the high quality version of the thumbnail use a URL similar to this:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
There is also a medium quality version of the thumbnail, using a URL similar to the HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
For the standard definition version of the thumbnail, use a URL similar to this:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
For the maximum resolution version of the thumbnail use a URL similar to this:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
All of the above URLs are available over HTTP too. Additionally, the slightly shorter hostname i3.ytimg.com
works in place of img.youtube.com
in the example URLs above.
Alternatively, you can use the YouTube Data API (v3) to get thumbnail images.
Solution 1
You can use YouTube Data API to access most of the information about the video, including duration:
<script type="text/javascript">
function youtubeFeedCallback(json){
document.write(json["data"]["duration"] + " second(s)");
}
</script>
<script type="text/javascript" src="http://gdata.youtube.com/feeds/api/videos/4TSJhIZmL0A?v=2&alt=jsonc&callback=youtubeFeedCallback&prettyprint=true"></script>
Demo here
When using jQuery you can use $.getJSON()
to make things easier.
Solution 2
Seems like YouTube JavaScript API v3 allows you to get the correct duration inside the onYouTubePlayerReady()
event. All you need to do is pass &version=3
when calling swfobject.embedSWF()
method.
Demo here
Best Answer
You can retrieve the movie's nominal width and height through the loader's contentLoaderInfo object. Just try the following :
The nominal width and height of your movie is 640x480. You will notice, however, that the movie is being scaled down (probably by YouTube, would need to be confirmed).
Also, be aware that what is returned by YouTube is an AVM1Movie object. An AVM1Movie object is an SWF that was compiled under ActionScript 2 (in YouTube's case, most likely Flash version 8). The interaction that is possible with an AVM1Movie object is much more limited than that of a regular AS3-based swf file.