youtube - 视频上传失败 - 无法转换文件 - 编码视频错误?

Ant*_*ony 5 .net youtube video encoding youtube-api

我正在使用.NET来创建视频上传应用程序.虽然它正在与YouTube通信并上传文件,但该文件的处理失败.YouTube向我显示错误消息"上传失败(无法转换视频文件)".这可能意味着"您的视频采用我们的转换器无法识别的格式......"

我尝试过两个不同的视频,当我手动上传时,这些视频都会上传和处理.所以我怀疑我的代码是.)没有正确编码视频和/或b.)没有正确发送我的API请求.

以下是我构建API PUT请求和编码视频的方法:

任何有关错误可能的建议都将受到赞赏.

谢谢

PS我没有使用客户端库,因为我的应用程序将使用可恢复的上传功能.因此,我手动构建我的API请求.

文档:http://code.google.com/intl/ja/apis/youtube/2.0/developers_guide_protocol_resumable_uploads.html#Uploading_the_Video_File

码:

            // 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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ers 0

我不知道 YouTube 正在寻找什么格式,但如果它是您的 Windows 系统可以识别的格式,我建议您将转换后的视频保存到磁盘上的文件,然后尝试打开它。