J'utilise .NET pour créer une application de téléchargement de vidéo. Bien que ce soit en communication avec YouTube et en téléchargeant le fichier, le traitement du fichier échoue. YouTube me donne le message d'erreur, "Téléchargement a échoué (impossible de convertir le fichier vidéo)." Cela signifie que soi-disant « votre vidéo est dans un format que nos convertisseurs ne reconnaissent pas ... »youtube - échec de téléchargement de vidéo - impossible de convertir le fichier - l'encodage de la vidéo n'est pas correct?
J'ai fait des tentatives avec deux vidéos différentes, toutes deux téléversent et bien processus quand je le fais manuellement . Donc, je soupçonne que mon code est a.) Ne pas encoder la vidéo correctement et/ou b.) Ne pas envoyer ma demande API correctement.
Ci-dessous est la façon dont je construis ma demande API PUT et codant pour la vidéo:
Toutes les suggestions sur ce que l'erreur pourrait être serait apprécié.
Merci
P.S. Je n'utilise pas la bibliothèque client car mon application utilisera la fonctionnalité de téléchargement de reprise. Ainsi, je construis manuellement mes demandes d'API .
Documentation: http://code.google.com/intl/ja/apis/youtube/2.0/developers_guide_protocol_resumable_uploads.html#Uploading_the_Video_File
code:
// new PUT request for sending video
WebRequest putRequest = WebRequest.Create(uploadURL);
// set properties
putRequest.Method = "PUT";
putRequest.ContentType = getMIME(file); //the MIME type of the uploaded video file
//encode video
byte[] videoInBytes = encodeVideo(file);
public static byte[] encodeVideo(string video)
{
try
{
byte[] fileInBytes = File.ReadAllBytes(video);
Console.WriteLine("\nSize of byte array containing " + video + ": " + fileInBytes.Length);
return fileInBytes;
}
catch (Exception e)
{
Console.WriteLine("\nException: " + e.Message + "\nReturning an empty byte array");
byte [] empty = new byte[0];
return empty;
}
}//encodeVideo
//encode custom headers in a byte array
byte[] PUTbytes = encode(putRequest.Headers.ToString());
public static byte[] encode(string headers)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] bytes = encoding.GetBytes(headers);
return bytes;
}//encode
//entire request contains headers + binary video data
putRequest.ContentLength = PUTbytes.Length + videoInBytes.Length;
//send request - correct?
sendRequest(putRequest, PUTbytes);
sendRequest(putRequest, videoInBytes);
public static void sendRequest(WebRequest request, byte[] encoding)
{
Stream stream = request.GetRequestStream(); // The GetRequestStream method returns a stream to use to send data for the HttpWebRequest.
try
{
stream.Write(encoding, 0, encoding.Length);
}
catch (Exception e)
{
Console.WriteLine("\nException writing stream: " + e.Message);
}
}//sendRequest
Veuillez ne pas répéter les balises comme ".NET" dans le titre. Laissez-les dans les tags où ils appartiennent. –