.net Windows Mobile应用程序-通过彩信协议播放流?

.net Windows Mobile应用程序-通过彩信协议播放流?,.net,windows-mobile,compact-framework,streaming,mms,.net,Windows Mobile,Compact Framework,Streaming,Mms,注意:这个问题之所以被重新提问,是因为我在上一个问题中意外点击了社区维基,显然这并没有为人们提供足够的声誉激励来回答这个问题。这是一个老问题的链接,请不要重复这些答案(它们也没有什么帮助): 现在有个问题 我正在尝试编写一个针对WindowsMobile 6.x的WindowsMobile应用程序,该应用程序将通过MMS协议传输互联网广播流(其中只有一项功能) NET Compact Framework是否有内置控件或API来实现这一点?或者我需要开始寻找第三方图书馆吗 我有点困惑为什么.NE

注意:这个问题之所以被重新提问,是因为我在上一个问题中意外点击了社区维基,显然这并没有为人们提供足够的声誉激励来回答这个问题。这是一个老问题的链接,请不要重复这些答案(它们也没有什么帮助):

现在有个问题

我正在尝试编写一个针对WindowsMobile 6.x的WindowsMobile应用程序,该应用程序将通过MMS协议传输互联网广播流(其中只有一项功能)

NET Compact Framework是否有内置控件或API来实现这一点?或者我需要开始寻找第三方图书馆吗

我有点困惑为什么.NET Compact Framework不支持这一点?我的意思是MMS是微软专有的Windows流媒体协议


实际上,我也不知道如何通过http传输MP3。我尝试过这个,但没有成功:

事实上,如果我导航到移动设备的Windows Media Player本身,并为其提供与我试图以编程方式传输的URL相同的URL,则不会成功。但是,在我的桌面计算机上的Windows Media Player中,此URL确实有效。是的,它输入正确

实际上,我遇到了另一个想法,在我的自定义应用程序中在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有什么建议吗


提前感谢。

当您使用彩信时,有两个选项可以为您的音乐服务:

  • 安装Windows Media服务器并为音乐添加发布点
  • 如果你有一个IIS服务器,你需要一个WMS插件,它允许你通过HTTP传输mp3
参考这个

请注意,以上两项是目前通过彩信提供媒体服务的唯一选项。如果您有其他web服务器,它将需要一个类似上面提到的IIS插件(不太可能找到)


完成后,作为WinMobile 6.x一部分的windows media player将能够从服务器上调谐和播放内容。客户端(WinMobile)不需要任何东西

使用内置媒体播放器时,Windows Mobile平台会启用彩信支持。启用彩信播放的第一个也是最简单的方法是在Windows Mobile上生成媒体播放器的实例,并将您需要播放的流的URL传递给它,您已经提到了这一点。但是,您所指的文章是关于在Windows而不是Windows Mobile上启动媒体播放器的。理论上,您应该能够以与打开HTTP链接相同的方式打开一个正常工作的彩信URL,移动设备将自动启动Windows Media Player

从开发的角度来看,我不知道框架中有哪一个.Net库允许播放视频流,但Silverlight库可能是例外,我不了解它的最新情况。这些手机可能会在今年晚些时候或明年初推出。因为compact框架是主框架的一个子集,所以在最近的2个SDK版本中,我没有看到任何对流的引用

作为旁注,将URL传递给Windows Mobile Media Player时,请在URL的末尾添加一个/*以查看是否播放流。如果这不起作用,流式传输方法可能无法提供有效的提要


我承认我没有看过新的Windows Mobile 6.5 SDK,它很可能包含此功能,但MSDN尚未向我透露任何信息。

据我所知,Microsoft不再支持彩信! 无论如何,我认为实现MMS协议没有问题,您可以使用任何可以接收MMS流转储套接字的Windows(非mobile)应用程序,并使用套接字类在Windows mobile上执行相同的操作,主要问题将是解码接收到的流!对我来说有两种方式: a) DirectShow推送源过滤器,将样本推送至解码器(有时您会遇到设备上不存在所需解码器的情况)
b) 您可以为windows mobile构建ffmpeg(CE)

这是一个很好的答案,但是我怀疑OP最初的问题是关于在windows mobile设备上播放流,而不一定是关于如何设置流媒体服务器。再次阅读,是的,听起来确实如此,尽管有一个关于通过http流媒体播放mp3的问题。是的,这都是客户端的,只是告诉用户使用内置媒体播放器不是一个选项。好的。为此,您需要使用DirectX。如果我能找到一个合适的链接,我会回来的。我很感谢你的回复,因为我还没有收到很多。我可能会从我正在探索的其他途径中得到一些想法。如果我找到一个有效的,我会发回,如果你遇到了什么,请也这样做。谢谢。嗨,亚历克斯……实际上我就是那个在你博客上评论DirectShow的人。你是说如果我使用DirectShow和正确的“推源过滤器”,我可能会遇到问题,因为硬件供应商可能也没有包括正确的解码器?至于ffmpeg,我已经考虑过这条路线。我暂时搁置了这条路径,希望我可以用微软的API在本机上实现。不过,我可能不得不回到这个想法上来。ffmpeg会同时播放彩信和MP3吗?谢谢。对于mp3,解码器不会有问题,但视频是个大问题。。。但正如我所写的,你们可以使用ffmeg作为解码器(它支持几乎所有现有的格式)。无论如何,接收流必须由你们自己实现,或者找到existig库