2013-01-22 70 views
3

我試圖通過谷歌的客戶端API的最新版本的大型視頻上傳到YouTube的視頻到YouTube(V3,最新檢出的代碼)後大通過谷歌的PHP客戶端API V3

我把它張貼視頻,但唯一可以讓它工作的方法是將整個視頻讀取到一個字符串中,然後通過數據參數傳遞它。

我當然不想將巨大的文件讀入內存,但api似乎沒有提供其他方式來執行此操作。它似乎期望一個字符串作爲data參數。以下是我用來發布視頻的代碼。

$snippet = new Google_VideoSnippet(); 
$snippet->setTitle("Test title2"); 
$snippet->setDescription("Test descrition"); 
$snippet->setTags(array("tag1", "tag2")); 
$snippet->setCategoryId("22"); 

$status = new Google_VideoStatus(); 
$status->privacyStatus = "private"; 

$video = new Google_Video(); 
$video->setSnippet($snippet); 
$video->setStatus($status); 

$videoData = file_get_contents($pathToMyFile); 
$youtubeService->videos->insert("status,snippet", $video, array("data" => $videoData, "mimeType" => "video/mp4")); 

有沒有辦法以塊的形式發佈的數據,或以某種方式流中的數據,從而避免整個文件讀入內存?

+0

這是一個很好的問題。我會盡力找出答案。 –

回答

4

它看起來像這個用例以前不支持。以下是一個適用於最新版Google API PHP客戶端(來自https://code.google.com/p/google-api-php-client/source/checkout)的示例。

if ($client->getAccessToken()) { 
    $videoPath = "path/to/foo.mp4"; 
    $snippet = new Google_VideoSnippet(); 
    $snippet->setTitle("Test title2"); 
    $snippet->setDescription("Test descrition"); 
    $snippet->setTags(array("tag1", "tag2")); 
    $snippet->setCategoryId("22"); 

    $status = new Google_VideoStatus(); 
    $status->privacyStatus = "private"; 

    $video = new Google_Video(); 
    $video->setSnippet($snippet); 
    $video->setStatus($status); 

    $chunkSizeBytes = 1 * 1024 * 1024; 
    $media = new Google_MediaFileUpload('video/mp4', null, true, $chunkSizeBytes); 
    $media->setFileSize(filesize($videoPath)); 

    $result = $youtube->videos->insert("status,snippet", $video, 
     array('mediaUpload' => $media)); 

    $status = false; 
    $handle = fopen($videoPath, "rb"); 
    while (!$status && !feof($handle)) { 
    $chunk = fread($handle, $chunkSizeBytes); 
    $uploadStatus = $media->nextChunk($result, $chunk); 
    } 

    fclose($handle); 
} 
+0

謝謝你的傳遞,Chirag! –

+1

我正在使用您的代碼,但它視頻垃圾並將其上傳到不同的部分是否有任何方法一次發送?所以最後我有一個文件,而不是在不同的部分? – J888

+0

我剛試過,它實際上傳了15MB文件的一個視頻。 –

相關問題