【问题标题】:Getting error when uploading video using Tweetinvi使用 Tweetinvi 上传视频时出错
【发布时间】:2016-10-23 17:29:27
【问题描述】:

我正在尝试上传大于 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 中提取了 Tweetinvi 解决方案(当前为 0.9.13.0 repository here),并看到上面在调用 Upload.UploadVideo(...) 时出现错误“无效内容”。它似乎在命令 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.C​​omplete() 上失败,Twitter API 返回“段加起来不等于提供的总文件大小”

我错过了什么?

TIA

【问题讨论】:

  • 有有效视频的运气吗?

标签: twitter tweetinvi


【解决方案1】:

我认为您遇到的问题与视频文件有关。该视频似乎使用 6 通道音频,而 Twitter Public Upload API 仅允许开发者上传带有单声道或立体声音频的视频。

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

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

以上方法在 upload.C​​omplete() 上失败,Twitter API 返回“段加起来不等于提供的总文件大小”

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

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

【讨论】:

  • 卫生署!感谢那。没有意识到音频不是 2 个通道。顺便说一句,我真的很喜欢这个组件。干得好兄弟!
  • 如何验证选中文件的通道属性?
  • Tweetinvi 没有任何工具来验证视频。现在我认为你必须遵守 Twitter 规则。我创建了一个将在某个时候实施的新工作项:github.com/linvi/tweetinvi/issues/415
猜你喜欢
  • 2015-09-17
  • 2017-02-26
  • 1970-01-01
  • 2014-11-02
  • 2015-07-19
  • 2014-01-26
  • 1970-01-01
  • 2012-11-23
  • 2018-06-28
相关资源
最近更新 更多