注意:这个问题被重新提出是因为我在上一个问题中不小心点击了社区 Wiki,显然这并没有以声誉的形式为人们提供足够的激励来回答它。这是旧问题的链接,请不要重复这些答案(无论如何它们并不是完全有帮助):
现在问题来了……
我正在尝试编写一个针对 Windows Mobile 6.x 的 Windows Mobile 应用程序,它将通过 MMS 协议传输互联网广播流(只是其他功能之一)。
.NET Compact Framework 是否具有可以执行此操作的内置控件或 API?还是我需要开始寻找第三方库?
我有点困惑,为什么 .NET Compact Framework 不支持这一点?我的意思是 MMS 是微软专有的 Windows 流媒体协议。
我实际上也不确定如何通过 http 流式传输 MP3。我试过这个,但没有成功:
事实上,如果我导航到移动设备的 Windows Media Player 本身并为其提供我试图以编程方式流式传输的相同 URL,则它是不成功的。但是,这个相同的 URL 在我的台式计算机上的 Windows Media Player 中确实有效。是的,它输入正确。
实际上,我遇到了另一个想法,即在我的自定义应用程序中在 Windows Mobile 上播放 MP3 文件,但它不具备即时流式传输的能力。相反,它会在移动设备上播放之前下载整个文件。这是一些代码:
string url = @"http://blahblah.com/blahblah.mp3";
string tempFilePath = Path.GetTempPath() + "tempFile.mp3";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fs = new FileStream(tempFilePath, FileMode.Create, FileAccess.ReadWrite))
{
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
}
}
}
}
SndPlaySync(tempFilePath, 0);
这是 DllImport:
[DllImport("aygshell.dll", SetLastError = true)]
private static extern IntPtr SndPlaySync(string Path, uint Flags);
有人对如何流式传输 MP3 有任何建议吗?
先感谢您。