|
Алгоритм работы плеера видео стримов
|
|||
---|---|---|---|
#18+
Стоит задача написать видео плеер для стримов и/или больших видео файлов(настолько больших, что читать их полностью в память нельзя). Сторонние платные компоненты использовать нельзя. Тема новая, как работают плеере стримов понятия не имею, поэтому хотелось бы обсудить алгоритм, который пришел в голову. В качестве технологий был выбран WPF. На данный момент картина видится следующим образом: Имеется WPF приложение содержащее MediaElement компонент. Однако MediaElement.source не может указывать на файл который я хочу проиграть, а в случае со стримом так и файла даже нет. Поэтому видимо необходимо еще 1 приложение работающее как Http Server базирующееся на HttpListener class. Далее предлагаемый алгоритм следующий: 1 шаг: MediaElement.Source = url, где url - это адрес HttpServer. При нажатии на кнопку начать стрим или проиграть большой файл, отправляется запрос на HttpServer, который видит, что это первый запрос и соответственно читает 1ю порцию медиа файла (либо аккумулирует первую порцию видео стрима) в массиве байтов и отправляет их в качестве ответа. 2 шаг: MediaElement проигрывает полученный контент, после чего, зная, что не получен сигнал конца трансляции или конца файла, отправляет новый запрос имеющим offset=2, после чего повторяется шаг 1 но чтение происходит с новой позиции внутри файла. Возникают вопросы: 1) насколько это правильный подход? 2) каким образом HttpServer захостить внутри WPF приложения, чтобы не плодить множество приложений. Чтобы WPF имело в себе и встроенный MediaElement и встроенный HttpServer? Или может быть есть другие альтернативы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2021, 18:32 |
|
|
Start [/forum/topic.php?fid=21&fpage=1&tid=1440256]: |
0ms |
get settings: |
16ms |
get forum list: |
7ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
49ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 455ms |
0 / 0 |