2

TweetInvi 0.9.9.7 で動画のアップロードに失敗するという問題があります。ビデオは 9MB の MP4 ビデオで、Web インターフェースを使用して問題なく Twitter にアップロードできます。私が得るエラーメッセージは次のとおりです。

一部のメディアが公開できなかったため、ツイートを公開できません。

私はフィドラーを使用し、このエラーメッセージが API から返されていることを確認できます:

error=セグメント サイズは <= 1 でなければなりません。

開発者の 1 人によると、このエラーは、5 MB を超える動画を 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);
4

1 に答える 1

2

最終的に、私はこの文書化されていない美しさを見つけました: 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 }
        });

これからの重要なポイント:

注: 選択したビデオがサポートされている形式でない場合は、プロンプトが表示されます。最大ファイルサイズは 512MB です。フォーマットの詳細については、こちらを参照してください。

于 2015-10-10T08:27:11.237 に答える