在我的一个应用程序中,我需要展示一个 YouTube 视频。如果用户提交视频,那么我必须检查该视频在 YouTube 中是否存在。如果可以,那么我必须将视频 ID 保存在我的数据库中并在网页中生成视频。
有什么方法可以验证 YouTube 视频吗?
在我的一个应用程序中,我需要展示一个 YouTube 视频。如果用户提交视频,那么我必须检查该视频在 YouTube 中是否存在。如果可以,那么我必须将视频 ID 保存在我的数据库中并在网页中生成视频。
有什么方法可以验证 YouTube 视频吗?
使用此类提取和验证 youtube 视频。这适用于 /embed/ 、 /v/ 、 ?v= /、youtu.be 等 YT 网址
class Youtube {
///// Put together by Sugato
////////// $video_id is the youtube video ID /////////////////////////
public $video_id = null;
///////// the Constructer ////////////////////////////////////////
public function __construct($url)
{
if (preg_match('/youtube\.com\/watch\?v=([^\&\?\/]+)/', $url, $id)) {
$this->video_id = $id[1];
} else if (preg_match('/youtube\.com\/embed\/([^\&\?\/]+)/', $url, $id)) {
$this->video_id = $id[1];
} else if (preg_match('/youtube\.com\/v\/([^\&\?\/]+)/', $url, $id)) {
$this->video_id = $id[1];
} else if (preg_match('/youtu\.be\/([^\&\?\/]+)/', $url, $id)) {
$this->video_id = $id[1];
} else {
$this->video_id = NULL;
}
}
/////////// validates if a youtube video actually exists //////////////
function validate()
{
if(empty($this->video_id))
{
return false;
}
else {
$curl = curl_init("http://gdata.youtube.com/feeds/api/videos/" . $this->video_id);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);
$request = curl_getinfo($curl);
curl_close($curl);
$result = explode(";", $request["content_type"]);
if($result[0] == "application/atom+xml")
{
return true;
} else {
return false;
}
}
}
}
像这样调用类
$yt = new Youtube($your_video_link_here);
$exist = $yt->validate();
if($exist)
{
echo "Yaaaayyyyyy!";
} else
{
echo "nAAAAyyyy!!!";
}
如果用户直接提交视频,您将必须拥有一个包含现有视频哈希值的数据库,以便与它进行比较(例如:SHA 校验和),然后检查哈希值是否已经存在。据我所知,Google/YouTube 没有提供这样的数据库供公众使用,但您可以为用户通过您的服务提交的视频创建自己的数据库。您可以使用其他更高级的技术,但它们需要访问所有现有的视频文件进行分析......这是不可用的。
至于获取视频 URL,当您将视频上传到 YouTube 时,您可以链接到它或将其嵌入网页中。