Come si legge nel titolo, un file video può essere caricato ed elaborato tramite la funzione di caricamento di YouTube. Tuttavia, quando provo a caricarlo a livello di codice (tramite OAuth2 e YouTube API v3), viene sempre bloccato con un'elaborazione dello 0% per cento. Ci sono youtuber su SO? C'è qualche forum speciale per i problemi di caricamento? (PS, c'è un similar question senza risultati.)Il file video è bloccato allo 0% per cento quando viene caricato tramite l'API YouTube
aggiornato Errore: Scavando più profondo, sembra essere correlato ai metadati video. Faccio il seguente errore di tanto in tanto:
Impossibile avviare il caricamento resumable (HTTP 400:. Youtube.video, la richiesta dei metadati specifica un titolo del video non valida)
Purtroppo, the error page for YouTube's API v3 non lo fa soffre davvero di logorrea ... Qualcuno sa cosa significa l'errore?
codice aggiornato: Al momento i file sono caricati blocco per blocco (che di solito funziona abbastanza bene, ma non tutti i tempi):
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;
}
È necessario pubblicare un [MCVE] (http://stackoverflow.com/help/mcve). Come lo stai facendo esattamente a livello di programmazione? – approxiblue
Ho aggiornato la domanda e ho allegato il codice in questione. – Jan
La tua connessione Internet è stabile? Potresti voler impostare 'chunkSizeBytes' in basso per un migliore recupero su connessioni meno affidabili. Oltre a questo, l'unico altro posto in cui posso pensare a dove potrebbe essere un problema è quando si imposta la dimensione del file. Hai provato il debug per avere un'idea migliore di dove si sta rovinando? –