TweetInvi视频上传失败,提示“由于部分媒体无法发布,推文无法发布!”

本文关键字:文无法 媒体 于部 视频 失败 提示 TweetInvi | 更新日期: 2023-09-27 18:17:12

我遇到了TweetInvi 0.9.9.7上传视频失败的问题。这个视频是一个9MB的MP4视频,我可以通过网络界面把它上传到twitter上。我得到的错误信息是:

这条推特不能像一些媒体一样发布发表!

我使用fiddler,可以看到这个错误消息从API返回:

error=segment size必须为<= 1.

据其中一名开发人员称,当一个超过5MB的视频试图上传到Twitter,而不是以块的形式发送时,就会出现这个错误。https://twittercommunity.com/t/append-call-in-video-upload-api-giving-error/49067

这是我的代码,我做错了什么?上传小于5MB的文件可以正常工作,但官方API规范支持最大15MB的视频

Auth.ApplicationCredentials = new TwitterCredentials("blahblahblah", "censoring private key", "***private, keep out***", "***beware of dog***");
var binary = File.ReadAllBytes(VideoPath);
Tweet.PublishTweetWithVideo("Here is some tweet text", binary);

TweetInvi视频上传失败,提示“由于部分媒体无法发布,推文无法发布!”

最终,我发现了这种没有记录的美:Upload.CreateChunkedUploader();

这暴露了我上传这个大文件所需的功能。下面是我的新工作代码,供其他可能遇到此问题的人使用。

        var chunk = Upload.CreateChunkedUploader(); //Create an instance of the ChunkedUploader class (I believe this is the only way to get this object)
        using(FileStream fs = File.OpenRead(VideoPath))
        {
            chunk.Init("video/mp4", (int)fs.Length); //Important! When initialized correctly, your "chunk" object will now have a type long "MediaId"
            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 = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                byte[] copy = new byte[bytesRead];
                Buffer.BlockCopy(buffer, 0, copy, 0, bytesRead);
                chunk.Append(copy, chunk.NextSegmentIndex); //The library says the NextSegment Parameter is optional, however I wasn't able to get it to work if I left it out. 
            }
        }
        var video = chunk.Complete(); //This tells the API that we are done uploading.
        Tweet.PublishTweet("Tweet text:", new PublishTweetOptionalParameters()
        {
            Medias = new List<IMedia>() { video }
        });

重要的结论:

  • 上传大于5mb的文件时,必须先将其拆分。
  • TweetInvi已经有一个机制来处理这个限制,我只是找不到任何文档。
  • API对每个视频文件有15mb的硬限制。尽管twitter的支持网站声称它可以处理512MB

注意:如果选择的视频不支持格式。最大文件大小为512MB。详情请参阅此处格式。