2011-12-06 1 views
3

gdata APIを使用してYouTubeに直接アップロードするためのプログレスバーを表示したいと思います。 uploader.phpスクリプトへのajax呼び出しによってアップロードが開始され、完了すると、ユーザーが見るページのステータスが更新されます。 5秒ごとにプログレスバーを更新するようにタイマーを設定したいので、ユーザーは気楽にやっていないし、進行中の完璧なアップロードをキャンセルする必要もありません。データを含むYouTubeの直接アップロードのプログレスバーですか?

私は、進行中の進行状況の情報を直接アップロードを使用してYouTube APIで取得する方法を見つけようとする人々に多くの記事を見てきました。私は何の答えも見ていない。これはAPIでサポートされるべきもののようです。これを行う方法はありませんか?

全く異なる方法がありますか?

答えて

0

PHPページを作成し、CURLを使用して「ブラウザベースのアップロード」を行うことができます。つまり、アップロードを制御でき、進行状況バーを作成することができます。
アップロードの仕組みの例を以下に示します。このコードの下の部分は興味深い部分です。 CURLを使用して「ブラウザベースのアップロード」を行い、結果を返します。

// upload.php 


require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path 
Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
$yt = new Zend_Gdata_YouTube(); 

// Define the authentication that will be used 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 

// Authenticate 
$authenticationURL= 'https://www.google.com/accounts/ClientLogin'; 
$httpClient = 
    Zend_Gdata_ClientLogin::getHttpClient(
       $username = "USERNAME", 
       $password = "PASSWORD", 
       $service = 'youtube', 
       $client = null, 
       $source = 'HTML SOURCE CODE SNIPPET', 
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 

$applicationId = 'YOUR APPLICATION ID'; 
$clientId = 'Upload videos to youtube using the youtube API'; 
$developerKey = 'YOUR DEVELOPER KEY'; 
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 



// create a new VideoEntry object 
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 

$myVideoEntry->setVideoTitle($videoTitle); 
$myVideoEntry->setVideoDescription($VideoDescription); 
// The category must be a valid YouTube category! 
$myVideoEntry->setVideoCategory($VideoCategory); 

// Set keywords. Please note that this must be a comma-separated string 
// and that individual keywords cannot contain whitespace 
$myVideoEntry->SetVideoTags($VideoTags); 

$tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken'; 
$tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl); 
$tokenValue = $tokenArray['token']; 
$postUrl = $tokenArray['url']; 


$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $postUrl."?nexturl=http://YOUR_WEBPAGE.com/"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
curl_setopt($ch, CURLOPT_POST, true); 
// same as <input type="file" name="file"> 
$post = array("file"=>"@".$VideoFile['tmp_name'], "token"=>$tokenValue); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$response = curl_exec($ch); 
$info = curl_getinfo($ch); 

echo $info; 

あなたが二回(最初のユーチューブ上のサーバーと2回目の)ビデオをアップロードする必要があるため【選択ブラウザのアップロード方法は、これを避けるためにという理由だけで存在して吸うことをここhttps://developers.google.com/youtube/2.0/developers_guide_php#Browser_based_Upload

+1

をより多くを読むことができます。 – themihai

関連する問題