2012-02-14 224 views
0

在我的一個應用程序中,我需要顯示YouTube視頻。如果用戶提交視頻,那麼我必須檢查該視頻是否在YouTube中存在。如果確定,那麼我必須將視頻ID保存在我的數據庫中,並在網頁中生成視頻。從YouTube獲取視頻鏈接

有沒有驗證YouTube視頻的方法?

回答

1

使用此類來提取和驗證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!!!"; 
    } 
0

如果用戶平坦地提交視頻,則必須擁有一個類似於數據庫的內容,該數據庫包含現有視頻的散列,以便與之比較(例如:SHA校驗和),然後檢查散列是否已存在。據我所知,Google/YouTube沒有提供供公衆使用的數據庫,但您可以自己開始爲用戶通過您的服務提交的視頻。還有其他更高級的技術可以使用,但是他們需要訪問所有現有視頻文件進行分析......這是不可用的。

就獲取視頻URL而言,當您將視頻上傳到YouTube時,您可以鏈接到它或將其嵌入到網頁中。

+0

感謝您的答覆 – ramesh 2012-02-15 03:03:36