通过谷歌PHP客户端API v3将大型视频发布到youtube



我正在尝试通过最新版本的谷歌客户端 api(v3,最新检出源)将大型视频上传到 youtube

我让它发布视频,但我能让它工作的唯一方法是将整个视频读取到一个字符串中,然后通过 data 参数传递它。

我当然不想将巨大的文件读入内存,但 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"));

有没有办法将数据以块的形式发布,或以某种方式流式传输数据以避免将整个文件读入内存?

看起来以前不支持此用例。 下面是一个适用于最新版本的 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);
}

相关内容

  • 没有找到相关文章

最新更新