Silverlight媒体播放器
我使用VSTS 2008与C#开发嵌入在ASP.Net Web应用程序的网页中的Silverlight应用程序。我在XAML中嵌入了一个MediaElement项目。我的问题是,我想将页面嵌入Silverlight媒体播放器,这可以让最终用户手动控制MediaElement项目 - 播放/暂停/停止/后退/转发。有没有参考样本?Silverlight媒体播放器
由于事先 乔治
EDIT1:添加更多准确的要求,
其实,我想手动控制播放,这意味着我要处理的播放器播放/暂停/停止/快退/转发事件并为事件处理程序添加我的代码以控制MediaElement并执行其他操作。
编辑2:我的需求是,我想播放两个重叠的视频。屏幕作为背景视频和相机作为前景视频(位于右下角)。这里是我对代码的修改,我现在的问题是,只播放背景视频,没有播放前景右下角的视频。有没有人有任何想法为什么?
BTW:我修改的代码和目前的工作是基于http://www.codeplex.com/sl2videoplayer
http://www.yourfilehost.com/media.php?cat=other&file=sl2videoplayer_24325_new.zip
这里是我的主要修改的代码的简要说明,
mediaControls.xaml.cs
private MediaElement _media = null;
private MediaElement _camera = null;
public MediaElement Camera
{
set
{
_camera = value;
}
}
void btnPlay_Checked(object sender, RoutedEventArgs e)
{
_camera.Play();
_media.Play();
OnPlayClicked();
}
Page.xaml
<MediaElement HorizontalAlignment="Stretch" Margin="0,0,0,0" x:Name="mediaPlayer" Stretch="Uniform" VerticalAlignment="Stretch" AutoPlay="false"/>
<MediaElement Width="100" Height="100" x:Name="cameraPlayer" AutoPlay="false" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
Page.xaml.cs
cameraPlayer.Source = App.Current.Resources["c"] as Uri;
App.xaml.cs(Application_Startup功能)
else if (item.Key.ToLower() == "c")
{
FormatUri(e.InitParams["c"].ToString(), "c", false);
}
default.html中
<param name="initParams" value="cc=true,markers=true,markerpath=markers_movie21.xml,m=http://localhost/screen.wmv,c=http://localhost/camera.wmv" />
哦,宝贝,我已经得到了媒体播放器为你:Sl2 Video Player。 MSPL开源且很棒。
要添加实际控制玩家的能力,请添加ScriptableMembers。 你已经看到了登记声明中的代码:
HtmlPage.RegisterScriptableObject("Page", page);
现在来看一个例子ScriptableMember:
[ScriptableMember]
public void SeekPlayback(string time)
{
TimeSpan tsTime = TimeSpan.Parse(time);
mediaControls.Seek(tsTime);
}
已经存在的代码。添加更多的方法来做你想做的事情。然后你可以从托管代码调用的方法在另一SL球员:
HtmlElement videoPlugin = HtmlPage.Document.GetElementById("VideoPlayer");
if (videoPlugin != null)
{
ScriptObject mediaPlayer = (ScriptObject)((ScriptObject)videoPlugin.GetProperty("Content")).GetProperty("Page");
mediaPlayer.Invoke("SeekPlayback", TimeSpan.FromSeconds(seconds).ToString());
}
或从JavaScript:
var sl = document.getElementById("VideoPlayer");
var content = sl.Content.Page;
content.SeekPlayback('55');
如果它们是两个独立的XAP包,就没有办法为两个通信因为Silverlight沙盒都是单独的。
SL2videoplayer表示它支持流媒体视频。但是当我尝试给媒体服务广播网址(OnDemand和Live)初始化参数'm'时,什么都没有出现。在init param example page也显示正在播放的远程wmv文件。
也有任何已知的问题与SL 3一起使用?
您是否看到我的评论?该页面具有用于访问媒体元素的mediaControls.Media属性。 – 2009-06-11 20:10:54
@Erik,一个新问题,我正在阅读代码,并且有3个播放器相关的项目,videoplayer,mediaplayer和videoplayerthemed,它们之间有什么区别以及VideoPlayerWeb网站项目之间有什么个人关系? – George2 2009-06-12 04:07:09
@Erik,我读了相关的代码,并没有找到代码来控制媒体播放/停止/暂停/后退/转发。任何提示哪部分代码要读取? – George2 2009-06-12 04:08:11