Как гласит название, видеофайл можно загрузить и обработать с помощью функции загрузки YouTube. Однако, когда я пытаюсь загрузить его программно (через OAuth2 и YouTube API v3), он всегда застревает при обработке 0% процентов. Есть ли какие-нибудь юбки? Есть ли специальный форум для загрузки проблем? (PS, есть аналогичный вопрос без результатов.)
ОБНОВЛЕНО ОШИБКА : углубляясь, это похоже на метаданные видео. Иногда я получаю следующую ошибку:
Не удалось запустить возобновляемую загрузку (HTTP 400: youtube.video, метаданные запроса указывают недопустимый заголовок видео.)
К сожалению, страница с ошибкой API YouTube v3 на самом деле не страдает от logorrhoea … Кто-нибудь знает, что означает ошибка?
ОБНОВЛЕННЫЙ КОД: На данный момент файлы загружаются куском куском (что обычно работает очень хорошо, но не все время):
function uploadFile($dbfile) { $client = $this->client; $youtube = new Google_Service_YouTube($client); $htmlBody = ""; try { // Create a snippet with title, description, tags and category ID // Create an asset resource and set its snippet metadata and type. // This example sets the video's title, description, keyword tags, and // video category. $snippet = new Google_Service_YouTube_VideoSnippet(); $snippet->setTitle($dbfile->displayname); // Numeric video category. See // https://developers.google.com/youtube/v3/docs/videoCategories/list $snippet->setCategoryId("22"); // Set the video's status to "private" $status = new Google_Service_YouTube_VideoStatus(); $status->privacyStatus = "private"; // Associate the snippet and status objects with a new video resource. $video = new Google_Service_YouTube_Video(); $video->setSnippet($snippet); $video->setStatus($status); $chunkSizeBytes = 1 * 1024 * 1024; $client->setDefer(true); $insertRequest = $youtube->videos->insert("status,snippet", $video); // Create a MediaFileUpload object for resumable uploads. $media = new Google_Http_MediaFileUpload( $client, $insertRequest, 'video/*', null, true, $chunkSizeBytes ); $media->setFileSize(filesize($dbfile->localfile)); // Read the media file and upload it chunk by chunk. $status = false; $handle = fopen($dbfile->localfile, "rb"); while (!$status && !feof($handle)) { $chunk = fread($handle, $chunkSizeBytes); $status = $media->nextChunk($chunk); } fclose($handle); $client->setDefer(false); $log = array("success" => true, "snippet_id" => $status["id"]); } catch (Google_ServiceException $e) { $log = array("success" => false, "errormsg" => $e->getMessage()); } catch (Google_Exception $e) { $log = array("success" => false, "errormsg" => $e->getMessage()); } return $log; }
Хорошо, тогда могут быть и другие проблемы с обработкой видео, но мое дело в том, что заголовок видео, которое нужно вставить, было слишком длинным. У YouTube ограничено не более 100 символов . Если вы попытаетесь вставить более длинные видеоролики, это исключает вышеупомянутое исключение. Возможно, они должны отметить это где-то в своей документации API.