Я пытался разобраться с этим в течение нескольких недель без везения. Я уверен, что мне не хватает базовых знаний в области управления памятью в .NET. Я не уверен, с чего начать googling.Vimeo загрузка через потоковое видео. Как загрузить видео на более мелкие части (куски), чтобы сохранить память?
Это API я слежу: https://developer.vimeo.com/api/upload#start-streaming
Если пользователь загружает видео, которое находится под 100mb он работает окей, но она принимает навсегда, чтобы загрузить. Однако, если файл превышает 100 МБ, время соединения заканчивается, потому что серверу не хватает памяти. Думаю, мне нужно загрузить файл в более мелкие части.
Это мой текущий uploadmethod:
public static string UploadVideo(HttpPostedFileBase file, dynamic ticket)
{
try
{
var apiUrl = ticket.upload_link_secure;
byte[] fileData;
using (var binaryReader = new BinaryReader(file.InputStream))
{
fileData = binaryReader.ReadBytes(file.ContentLength);
}
using (var client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.Authorization, "bearer " + AccessToken);
client.Headers.Add("Accept", "application/vnd.vimeo.*+json;version=3.0");
client.UploadData(apiUrl, "PUT", fileData.ToArray());
}
}
catch (Exception ex)
{
EventLog.LogEvent("Error uploading video: ", ex.Message, ex.ToString(),
EventTypes.Error, false, "");
}
return "Failed";
}
Сейчас я загружаю все это в один массив байт, который, вероятно, является плохой практикой. Я могу взять весь контент и разделить его на части, скажем, 3mb, а затем загрузить его? Разве это не заставило бы меня называть verifyUpload много раз просто для загрузки одного видео? Скажем,
Я действительно не понимаю ваш случай использования, но очевидным недостатком с вашим примером является то, что вы преобразовываете поток в массив байтов, который будет потреблять память на вашем сервере. Вам необходимо полностью передать данные, не преобразовывая их в байты, используя 'Stream.CopyTo'. Я не могу понять, почему вы сначала отправляете файл на сайт .NET, а затем повторно отправляете его на другой сервер - кажется лишним и ненужным. – NightOwl888
Каким будет решение? Использование javascript для его загрузки? Не vimeodotnet также опубликовать файл в .net сначала, а затем загрузить его в vimeo? – sindrem
Но, мне нужно сохранить файл на диск, прежде чем загружать его в vimeo? – sindrem