NOTE:这个问题被重新提出是因为我在上一个问题中不小心点击了社区维基,显然这并没有以声誉的形式提供足够的激励来让人们回答这个问题。这是旧问题的链接,请不要重复这些答案(无论如何它们并不完全有帮助):
链接到原始问题 https://stackoverflow.com/questions/1106947/windows-mobile-app-play-mms-stream
现在问题是...
我正在尝试编写一个针对 Windows Mobile 6.x 的 Windows Mobile 应用程序,该应用程序将通过 MMS 协议传输互联网广播流(这只是其中的一个功能)。
.NET Compact Framework 是否有内置控件或 API 可以执行此操作?或者我需要开始寻找第三方库?
我有点困惑为什么 .NET Compact Framework 不支持这一点?我的意思是 MMS 是 Microsoft 专有的 Windows 流媒体协议。
我实际上也不知道如何通过 http 传输 MP3。我已经尝试过这个,但没有成功:
一些关于使用 WMPLib.dll 的 MSDN 文章 http://msdn.microsoft.com/en-us/library/dd562692(VS.85).aspx
事实上,如果我导航到移动设备的 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 有任何建议吗?
先感谢您。