使用Tweetinvi上传视频时出错

时间:2016-06-22 00:33:08

标签: twitter tweetinvi

我正在尝试上传大于5MB但小于15MB的文件。在这种情况下,来自sample-videos.com

的10MB ...样本视频

我正在使用Tweetinvi,它适用于小于5MB的文件,但在分块上传时失败。我尝试过简单而艰难的方式。

简单方法:

        var video = File.ReadAllBytes(@"D:\Projects\SampleVideo_1280x720_10mb.mp4");
        var media = Upload.UploadVideo(video); // Error here... Invalid Content
        var tweet = user.PublishTweet(message, new PublishTweetOptionalParameters
        {
            Medias = { media }
        });

我从Git(目前为0.9.13.0 repository here)中提取了Tweetinvi解决方案,并且在调用Upload.UploadVideo(...)时看到上面的内容出现错误“Invalid Content”。它似乎在命令FINALIZE上失败。

艰难地尝试:

        using (var fileStream = File.OpenRead(@"D:\Projects\SampleVideo_1280x720_10mb.mp4"))
        {
            var initSucceeded = uploader.Init("video/mp4", (int)fileStream.Length);

            byte[] buffer = new byte[4900000]; //Your chunk MUST be 5MB or less or else the Append function will fail silently.
            int bytesRead = 0;

            while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
            {
                byte[] copy = new byte[bytesRead];
                Buffer.BlockCopy(buffer, 0, copy, 0, bytesRead);
                var appendResult = uploader.Append(new ChunkUploadAppendParameters(copy, "video/mp4", null) { SegmentIndex = uploader.NextSegmentIndex });
            }
            var video = uploader.Complete(); // Fails here... Returned error: Segments do not add up to provided total file size
            var tweet = user.PublishTweet(message, new PublishTweetOptionalParameters()
            {
                //Medias = { video }
                MediaIds = { video.MediaId.Value }
            });
        }

以上内容失败,上传。完整(),Twitter API返回“细分不会累加到提供的总文件大小”

我错过了什么?

TIA

1 个答案:

答案 0 :(得分:1)

我认为您遇到的问题是视频文件。该视频似乎使用了6声道音频和Twitter Public Upload API,只允许开发人员上传带有单声道或立体声音频的视频。

enter image description here

来源:https://dev.twitter.com/rest/media/uploading-media

我不是视频属性方面的专家,所以我可以随意证明我的错误。

  

以上内容失败,上传。完整(),Twitter API返回“细分不会累加到提供的总文件大小”

此错误意味着您实际上并未发送您承诺Twitter的所有字节。在INIT期间,您告诉Twitter您的媒体大小,如果它在组合APPEND中收到的内容不等于您在INIT中指定的值,则会抛出您描述的错误。

PS:我尝试使用2通道14.8 MB mp4,它运行正常。 var media = Upload.UploadVideo(binary);