#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() немедленно получает исключение:
Невозможно записать данные в транспортное соединение: существующее соединение было принудительно закрыто удаленным хостом.
Как мне изменить свой код, чтобы он работал? Я предполагаю, что это может быть неправильный заголовок или способ отправки (фрагменты вместо отправки всех).
К сожалению, я нигде не нашел работающего примера.