[Windows Phone] Windows Phone 7 播放远程流媒体的代码实现方法

最近打算做一些视频音频方面的应用,但是Windows Phone 7对可播放的媒体格式有太多限制,研究了一下最终还是放弃了,因为要播放的媒体格式是不确定的,没办法简单实现,但在此过程中了解了播放流媒体的几种方法,下面分别给大家介绍。

对于本地媒体文件的播放我就不多说了,只要将媒体文件加入项目写正确路径即可播放,我们下面介绍几种远程流媒体的播放方法。

1. MediaElement

首先要说的就是WP7开发SDK中自带的MediaElement,经过我的测试该控件在播放支持格式的音频基本没问题,但是播放视频会有问题,也可能是我的视频源有问题,使用非常简单,在界面XAML中加入如下代码:

 

<MediaElement x:Name="meMain" MediaFailed="meMain_MediaFailed"></MediaElement> 
<Button x:Name="btnPlay1" Content="Play in MediaElement" Click="btnPlay1_Click"></Button>

 

其中MediaElement就是播放媒体的主体,大家可以设置其他属性来设置外观,下面的按钮用来播放,按钮点击代码如下:

 

meMain.Source = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute); 
meMain.Play();

 

这样既可以完成最简单的播放功能:

QQ截图20110930130340

2. MediaPlayerLauncher

第二种也是SDK自带的,名为MediaPlayerLauncher,改类没有可视化内容,调用之后会显示一个新界面,在界面中有全部的媒体播放控制功能,我们使用下面代码实现该功能:

 

MediaPlayerLauncher mediaPlayerLauncher = new MediaPlayerLauncher(); 
mediaPlayerLauncher.Media = new Uri("http://www.robtowns.com/music/blind_willie.mp3", UriKind.Absolute); 
mediaPlayerLauncher.Location = MediaLocationType.Data; 
mediaPlayerLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop; 
mediaPlayerLauncher.Show();

 

实现效果如下:

QQ截图20110930130525

3. Silverlight Media Framework

这是一套开源的媒体播放框架,大家可以通过下面地址下载:

http://smf.codeplex.com/releases/view/63434

(只要下载microsoft-smf-binwp7-2.2011.0410.1.zip即可)

下载完成后如下:

QQ截图20110930133836

接着下载另一个必要组件:

Download Smooth Streaming Player Development Kit

下载并安装后我们可以在对应安装目录中找到要用的DLL文件(C:\Program Files (x86)\Microsoft SDKs\IIS Smooth Streaming Client):

QQ截图20110930130813

接着就是用他们,将所有DLL文件加入到项目引用中::

QQ截图20110930134143

完成之后即可加入如下代码实现功能,首先加入命名空间:

 

xmlns:Core="clr-namespace:Microsoft.SilverlightMediaFramework.Core;assembly=Microsoft.SilverlightMediaFramework.Core.Phone" 
xmlns:Media="clr-namespace:Microsoft.SilverlightMediaFramework.Core.Media;assembly=Microsoft.SilverlightMediaFramework.Core.Phone" 

 

然后加入播放器代码:

 

<Core:SMFPlayer> 
    <Core:SMFPlayer.Playlist> 
        <Media:PlaylistItem DeliveryMethod="AdaptiveStreaming" MediaSource="http://ecn.channel9.msdn.com/o9/content/smf/smoothcontent/bbbwp7/big buck bunny.ism/manifest"/> 
    </Core:SMFPlayer.Playlist> 
</Core:SMFPlayer>

 

实现效果如下:

QQ截图20110930134519

希望这些能弄对大家有帮助!感谢!



posted @ 2011-09-30 13:58 WilsonWu 阅读(1388) 评论(11) 编辑 收藏

 回复 引用 查看   
#1楼 2011-09-30 14:05 chenkai      
奥 具体遇到什么问题?
还是转码吗...格式吗?

 回复 引用 查看   
#2楼[楼主] 2011-09-30 14:07 WilsonWu      
引用chenkai:
奥 具体遇到什么问题?
还是转码吗...格式吗?

没办法播放不支持的格式,如果要实现的话只能自己架设一个media server来转码媒体流,我放弃了,呵呵。

 回复 引用 查看   
#3楼 2011-09-30 14:10 chenkai      
@WilsonWu
这个问题 不是你一个人遇到.早在6 7 月份时有人打算做视频方面的APP 都碰到很多转码格式不支持的问题.官方也承认这个问题. 这还得自己想办法解决. 可以说Windows phone在这方面限制也是最严格的没办法.

 回复 引用 查看   
#4楼[楼主] 2011-09-30 14:15 WilsonWu      
引用chenkai:
@WilsonWu
这个问题 不是你一个人遇到.早在6 7 月份时有人打算做视频方面的APP 都碰到很多转码格式不支持的问题.官方也承认这个问题. 这还得自己想办法解决. 可以说Windows phone在这方面限制也是最严格的没办法.

估计除了用服务器中转外就得等WP7的后续版本来支持更多编码或有人开发出来WP7上的解码器了。

 回复 引用 查看   
#5楼 2011-09-30 14:22 IMEY0001      
艾美鲜花礼品网(www.imey.cn)
 回复 引用 查看   
#6楼 2011-09-30 22:13 weishao      
很不错,但是 想说的是wp7 在中国 根本没市场,学习的积极性不高! 而且连一本好书都没有……
 回复 引用 查看   
#7楼 2011-10-01 17:05 xinbaby      
还可以用 xna framework的 mediaPlayer 还有 7.1的新特性
background audio agent 都可以播放 远程uri :)

 回复 引用 查看   
#8楼[楼主] 2011-10-04 11:10 WilsonWu      
引用xinbaby:
还可以用 xna framework的 mediaPlayer 还有 7.1的新特性
background audio agent 都可以播放 远程uri :)

多谢提醒!

 回复 引用 查看   
#9楼 2011-10-15 22:19 wrafe      
版权控制呢?有木办法搞定
 回复 引用 查看   
#10楼 2011-10-16 00:39 潇潇兮      
MediaElement 我曾经在silverlight上也是遇到问题,有的wmv文件就播放不了
 回复 引用 查看   
#11楼 2011-10-27 16:01 天涯2008      
还想请问, 这个东西能播放3gp的流吗? 我试过,不知道是哪里错了还是怎么了, 播放器没反映。