我正在尝试使用:AxInterop.WMPLib 和 Interop.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 OK\r\n" +
//"Connection: keep-alive\r\n" +
"User-Agent: Mozilla/5.0\r\n" +
"Content-Type: video/mp4\r\n" +
"Content-Length: " + ms.Length + "\r\n" +
string.Format("Content-Range: bytes {0}-{1}/{2}", 0, ms.Length - 1, ms.Length) + "\r\n" +
"\r\n";
var x = Encoding.Default.GetBytes(header);
client.Client.Send(x);
client.GetStream().Write(Properties.Resources.movie, 0, (Int32)ms.Length);
如果我问http://127.0.0.1:12 ,该视频在 Postman 中运行良好
如果我从 AxWMPLib.AxWindowsMediaPlayer 控件的级别设置相同的地址,则在执行时 client.GetStream().Write() 立即收到异常:
无法将数据写入传输连接:现有连接被远程主机强行关闭。
如何修改我的代码以使其正常工作?我认为它可能是不正确的标头或发送方法(块而不是全部发送)。
不幸的是,我在任何地方都没有找到一个可行的例子。