我为joomla创建了(是的另一个)YouTube播放器模块! 在模块后端,我使用this answer中的代码来显示录像带。不幸的是,get_video_info返回的视频ID最多只是嵌入禁止文字,例如:“此视频包含来自VEVO的内容。限制在某些网站或应用程序上播放。在YouTube上观看”。
实际上我从videoinfo获取信息并搜索标题或原因(如果存在)模块回显后端的值。 我的问题是 - 任何人都知道为什么yt get_video_info会抛出此错误,即使它仍然可以嵌入视频?
一个例子: 视频ID Y1_VsyLAGuk
如果您尝试从以下位置获取视频信息: http://youtube.com/get_video_info?video_id=Y1_VsyLAGuk你会得到一个不可能的错误。
但该模块可以在同一主机上的嵌入式youtube API v3播放器中创建和播放视频。
if (isset($formID)){
$cleanedID = cleanUp($id);
// Some Magic to get the Video Title, Thanks to Stack Overflow User Cruel for this nice Hint
$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$cleanedID);
parse_str($content, $ytarr);
if(array_key_exists('title', $ytarr)){
return '<div style="width:220px;"><h4>'.$ytarr['title'].'</h4><img style="border-radius:4px;" src="https://img.youtube.com/vi/'.$cleanedID.'/hqdefault.jpg" width="100%" /></div>';
// Credits: https://stackoverflow.com/a/5151862/4708062
}elseif(array_key_exists('reason', $ytarr)){
return '<div class="alert alert-danger" style="width:170px;"><p style="text-align:center">'.$ytarr['reason'].'</p></div><img style="border-radius:4px;" src="https://img.youtube.com/vi/'.$cleanedID.'/hqdefault.jpg" width="220px" />';
}else{
//print_r($ytarr);
return ;
}
}
答案 0 :(得分:0)
解决方案是使用noembed.com服务获取视频信息:
示例网址:“https://noembed.com/embed?url=https://www.youtube.com/watch?v=YXN_lNZZAZA”
答案 1 :(得分:0)
我遇到了同样的问题,但是不想像noembed那样使用外部站点。 图书馆chojnicki / video-platforms-parser解决了所有问题。