Я пытаюсь загрузить файлы размером более 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 возвращает «Сумма сегментов не соответствует указанному общему размеру файла».
Что мне не хватает?
ТИА