Получение ошибки при загрузке видео с помощью Tweetinvi

Я пытаюсь загрузить файлы размером более 5 МБ, но менее 15 МБ. В данном случае это 10 МБ... пример видео с сайта sample-videos.com.

Я использую Tweetinvi, и он отлично работает с файлами размером менее 5 МБ, но не работает при загрузке по частям. Я пробовал легкий и трудный путь.

Простой способ:

        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 }
        });

Я загрузил решение Tweetinvi из Git (в настоящее время 0.9.13.0 репозиторий здесь) и вижу, что приведенное выше получает сообщение об ошибке «Неверный контент» при вызове 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 }
            });
        }

Вышеприведенное не выполняется при загрузке.Complete(), когда API Twitter возвращает «Сумма сегментов не соответствует указанному общему размеру файла».

Что мне не хватает?

ТИА


person alex.davis.dev    schedule 22.06.2016    source источник
comment
Есть ли удача с действительным видео?   -  person Linvi    schedule 22.06.2016


Ответы (1)


Я думаю, что у вас проблема с видеофайлом. Похоже, что видео использует 6-канальный звук, а Twitter Public Upload API позволяет разработчикам загружать видео только с монофоническим или стереофоническим звуком.

введите здесь описание изображения

Источник: https://dev.twitter.com/rest/media/uploading-media< /а>

Я не эксперт в свойствах видео, так что не стесняйтесь доказывать, что я не прав, если я ошибаюсь.

Вышеприведенное не выполняется при загрузке.Complete(), когда API Twitter возвращает «Сумма сегментов не соответствует указанному общему размеру файла».

Эта ошибка означает, что вы на самом деле отправляете не весь байт, который обещал Twitter. Во время INIT вы сообщаете Твиттеру размер вашего мультимедиа, и если то, что он получает в комбинированном APPEND, не равно значению, указанному вами в INIT, выдается описанная вами ошибка.

PS: я пробовал использовать 2-канальный 14,8 МБ mp4, и он работает правильно. var media = Upload.UploadVideo(binary);

person Linvi    schedule 22.06.2016