使用 Tweetinvi 上传视频时出错

Getting error when uploading video using Tweetinvi

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

的示例视频

我正在使用 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 解决方案,发现上面的代码在调用 [=32= 时出现错误 "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 }
            });
        }

上述 upload.Complete() 失败,Twitter API 返回 "Segments do not add up to provided total file size"

我错过了什么?

TIA

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

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

我不是视频属性方面的专家,所以如果我是,请随时证明我是错的。

The above fails on upload.Complete() with the Twitter API returning "Segments do not add up to provided total file size"

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

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