Как разбить файл wmv на байты, реализованные на языке C#?
У меня есть файл WMV, размер которого составляет 300 байт. Я хочу разделить его на несколько байтов (пример: (150 байтов каждый) или (3 100 байтов)). Как мне реализовать это на языке C#?
3 ответа
Это действительно зависит от того, хотите ли вы, чтобы файлы работали или нет. Разделить их на куски очень просто: считайте их в байтовый массив, используйте цикл for, который копирует часть массива в файл размером CHUNK, не забывая копировать последние байты файла. Разделение их на рабочие файлы отличается.
Реальный ответ таков: просто используйте потоковый сервер и забудьте о написании потокового протокола. Это безумие. Чтобы разбить файл на байтовые сегменты, вы можете использовать что-то вроде кода ниже. Не проверено, но должно быть выполнено примерно на 95%.
Вы должны взглянуть на протоконтроль, если вы еще этого не сделали. http://msdn.microsoft.com/en-us/library/cc251059(v=PROT.10).aspx И если у вас есть, и вы задали этот вопрос, у вас нет шансов на кубики льда в аду заставить его работать,
int chunkSize = 300;
var file = File.Open("c:\file.wmv", FileMode.Open);
var numberOfChunks = (file.Length/chunkSize)+1;
byte[][] fileBytes = new byte[numberOfChunks][];
for (int i = 0; i < numberOfChunks; i++)
{
int bytesToRead = chunkSize;
if (i == numberOfChunks + 1)
{
bytesToRead = (int)(file.Length - (i * chunkSize));
}
fileBytes[i] = new byte[bytesToRead];
file.Read(fileBytes[i], i * chunkSize, bytesToRead);
}
Я попытался бы просто передать это без явного разделения (стек tcp разделит его, как ему нравится ^^). Если у вас есть хороший кодек, он все равно будет его воспроизводить. (Vlc всегда может воспроизводить видео во время загрузки)