在我的一個應用程序中,我需要顯示YouTube視頻。如果用戶提交視頻,那麼我必須檢查該視頻是否在YouTube中存在。如果確定,那麼我必須將視頻ID保存在我的數據庫中,並在網頁中生成視頻。從YouTube獲取視頻鏈接
有沒有驗證YouTube視頻的方法?
在我的一個應用程序中,我需要顯示YouTube視頻。如果用戶提交視頻,那麼我必須檢查該視頻是否在YouTube中存在。如果確定,那麼我必須將視頻ID保存在我的數據庫中,並在網頁中生成視頻。從YouTube獲取視頻鏈接
有沒有驗證YouTube視頻的方法?
使用此類來提取和驗證YouTube視頻。這適用於YouTube網址像/嵌入/,/ V /,?V = /,youtu.be
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時,您可以鏈接到它或將其嵌入到網頁中。
感謝您的答覆 – ramesh 2012-02-15 03:03:36