Twitter API - FINALIZE命令在上传分块视频后失败

时间:2016-06-16 18:03:23

标签: c# twitter

我正在使用Twitter Media API将视频上传到Twitter,然后尝试调用FINALIZE。 继续得到: "大文件无法同步完成。"

result = new RequestBuilder(oauth, "POST", "https://upload.twitter.com/1.1/media/upload.json")
            .AddParameter("command", "FINALIZE")
            .AddParameter("media_id", media_id)
            .Execute().Result;

//code from Execute
            try
            {
                response = await request.GetResponseAsync().ConfigureAwait(false);
                using (var stream = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(stream))
                    {
                        content = reader.ReadToEnd();
                    }
                }
            }
 catch (WebException ex)
            {
                using (var stream = ex.Response.GetResponseStream())
                {
                    using (var reader = new StreamReader(stream))
                    {
                        content = reader.ReadToEnd();
                    }
                }
                throw;
            }
            finally
            {
                if (response != null)
                {
                    ((IDisposable)response).Dispose();
                }
            }

2 个答案:

答案 0 :(得分:0)

我从未收到此异常。您是否尝试过使用tweetinvi并查看它是否适用于同一个文件?

请注意,Twitter仅支持15MB视频。

视频上传的Wiki:https://github.com/linvi/tweetinvi/wiki/Upload#upload-videos。视频会自动分块以满足Twitter要求(视频每块5MB)。

var video = File.ReadAllBytes("path");
var media = Upload.UploadVideo(video);
var tweet = Tweet.PublishTweet("hello", new PublishTweetOptionalParameters
{
    Medias = { media }
});

如果您真的想手动执行此操作,仍然可以使用ChunkUploader

https://github.com/linvi/tweetinvi/wiki/Upload#chunked-uploads

答案 1 :(得分:0)

Twitter确实支持最大512Mb的较大视频,可以在以下页面找到要求:https://developer.twitter.com/en/docs/media/upload-media/uploading-media/media-best-practices

要上传较大的文件,必须在INIT调用中将media_category参数设置为“ tweet_video”。然后FINALIZE调用将为您提供您需要跟进STATUS命令调用的processing_info。

.post("media/upload", {
      command: "INIT",
      total_bytes: mediaSize,
      media_type: mediaType,
      media_category: 'tweet_video'
  })