Ich verwende .NET, um eine Anwendung zum Hochladen von Videos zu erstellen. Obwohl es Kommunikation mit YouTube und das Hochladen der Datei ist, schlägt die Verarbeitung von diese Datei fehl. YouTube gibt mir die Fehlermeldung "Upload fehlgeschlagen (Videodatei kann nicht konvertiert werden)". Das bedeutet vermutlich, dass „Ihr Video in einem Format, das unser Umrichter nicht erkennen ...“youtube - Fehler beim Hochladen des Videos - Datei kann nicht konvertiert werden - Codierung des Videos falsch?
ich versucht, mit zwei verschiedenen Videos gemacht habe, von denen beide und Prozessfein hochladen, wenn ich es tue manuell. Also vermute ich, dass mein Code a ist.) Das Video nicht richtig zu kodieren und/oder b.) Meine API Anfrage nicht richtig zu senden.
Unten ist, wie ich meine API PUT-Anfrage am Bau und Codierung des Video:
Irgendwelche Vorschläge auf, was der Fehler würde geschätzt sein könnte.
Danke
P.S. Ich verwende nicht die Client-Bibliothek, da meine Anwendung die Funktion zum wiederholbaren Hochladen verwendet. Daher erstelle ich meine API-Anfragen manuell.
Dokumentation: 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
Bitte wiederholen Sie keine Tags wie ".NET" im Titel. Belassen Sie sie in den Tags, wo sie hingehören. –