Потоковая передача Mp4 в WMP

#c# #winforms #video #wmp #wmplib

Вопрос:

Я пытаюсь использовать: AxInterop.WMPLib и взаимодействие.WMPLib для воспроизведения Mp4 (видео аудио). К сожалению, библиотека имеет свои пределы. В URL-адресе можно указать локально расположенный файл. Я бы хотел, чтобы файл Mp4 был встроен в EXE. Я нашел предложение начать потоковую передачу как часть приложения, поэтому URL-адрес можно задать следующим образом http://127.0.0.1:PORT. Поэтому я поместил файл mp4 в качестве ресурсов. Пример файла можно найти здесь: https://jsoncompare.org/LearningContainer/SampleFiles/Video/MP4/sample-mp4-file.mp4

 var ms = new MemoryStream(Properties.Resources.sample_mp4_file); TcpListener listener = new TcpListener(IPAddress.Loopback, 12); listener.Start(); Console.WriteLine("Start"); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Client");  string header = "HTTP/1.1 200 OKrn"    //"Connection: keep-alivern"    "User-Agent: Mozilla/5.0rn"    "Content-Type: video/mp4rn"    "Content-Length: "   ms.Length   "rn"    string.Format("Content-Range: bytes {0}-{1}/{2}", 0, ms.Length - 1, ms.Length)   "rn"    "rn";  var x = Encoding.Default.GetBytes(header); client.Client.Send(x); client.GetStream().Write(Properties.Resources.movie, 0, (Int32)ms.Length);  

Видео отлично работает в Postman, если я спрошу http://127.0.0.1:12

Почтальон Ответ

Если я установлю тот же адрес с уровня AxWMPLib.Управление AxWindowsMediaPlayer, во время выполнения клиента.GetStream().Write() немедленно получает исключение:

Невозможно записать данные в транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом.

Как мне изменить свой код, чтобы он работал? Я предполагаю, что это может быть неправильный заголовок или способ отправки (фрагменты вместо отправки всех).

К сожалению, я нигде не нашел работающего примера.