我正在寻找一个能够从网址中提取视频的youtube持续时间的功能.我读了一些教程,但没有得到它.我使用网址在我的网站上嵌入视频,我有一个拉缩略图的功能,我只想要类似的东西来获取持续时间.这是我如何得到拇指……
function get_youtube_screen_link( $url = '',$type = 'default',$echo = true ) { if( empty( $url ) ) return false; if( !isset( $type ) ) $type = ''; $url = esc_url( $url ); preg_match("|[\\?&]v=([^&#]*)|",$url,$vid_id); if( !isset( $vid_id[1] ) ) return false; $img_server_num = 'i'. rand(1,4); switch( $type ) { case 'large': $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/0.jpg"; break; case 'first': // Thumbnail of the first frame $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/1.jpg"; break; case 'small': // Thumbnail of a later frame(i'm not sure how they determine this) $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/2.jpg"; break; case 'default': case '': default: $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/default.jpg"; break; } if( $echo ) echo $img_link; else return $img_link;
}
解决方法
你可以使用这样的东西:
<?PHP function getDuration($url){ parse_str(parse_url($url,PHP_URL_QUERY),$arr); $video_id=$arr['v']; $data=@file_get_contents('http://gdata.youtube.com/Feeds/api/videos/'.$video_id.'?v=2&alt=jsonc'); if (false===$data) return false; $obj=json_decode($data); return $obj->data->duration; } echo getDuration('http://www.youtube.com/watch?v=rFQc7VRJowk'); ?>
返回视频的持续时间(以秒为单位).
参考:http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html