Estoy usando .NET para crear una aplicación de carga de videos. Aunque es que se comunica con YouTube y carga el archivo, el proceso de falla. YouTube me da el mensaje de error "Falló la carga (no se puede convertir el archivo de video)". Se supone que esto significa que "el vídeo está en un formato que nuestros convertidores no reconocen ..."youtube - falla de carga de video - no se puede convertir el archivo - ¿la codificación del video es incorrecta?
he hecho intentos con dos videos diferentes, los cuales suben y el proceso bien cuando lo hago manualmente . Así que sospecho que mi código es a) que no codifica el video correctamente y/o b) que no envía mi solicitud de API correctamente.
A continuación se muestra cómo estoy construyendo mi solicitud de API PUT y codifica la vídeo:
alguna sugerencia sobre lo que podría ser sería apreciado el error.
Gracias
P.S. No estoy usando la biblioteca del cliente porque mi aplicación usará la característica de carga reanudable. Por lo tanto, estoy construyendo manualmente mis solicitudes API .
Documentación: http://code.google.com/intl/ja/apis/youtube/2.0/developers_guide_protocol_resumable_uploads.html#Uploading_the_Video_File
Código:
// 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
por favor no repita las etiquetas como ".NET" en el título. Déjalos en las etiquetas a las que pertenecen. –