我正在使用VSTS 2008和C#来开发嵌入在ASP.Net Web应用程序的网页中的Silverlight应用程序。我在XAML中嵌入了MediaElement项。我的问题是,我想在页面中嵌入一个Silverlight媒体播放器,它可以让最终用户手动控制MediaElement项目 - 播放/暂停/停止/快退/转发。有没有参考样品?
提前谢谢, 乔治EDIT1:添加更准确的要求,
实际上,我想手动控制播放,这意味着我想处理播放器播放/暂停/停止/倒带/转发事件,并为事件处理程序添加我的代码来控制MediaElement并执行其他操作。
EDIT2:我的需求是,我想播放两个重叠的视频。屏幕作为背景视频和相机作为前景视频(位于右下角)。这是我对代码的修改,我目前的问题是,只播放背景视频,从未播放前景右下角视频。有没有人有任何想法?
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 function)
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" />
答案 0 :(得分:4)
哦宝贝,我有适合您的媒体播放器: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');
答案 1 :(得分:1)
如果它们是两个单独的xap软件包,那么两者之间就无法进行通信,因为Silverlight沙箱都是单独的。
答案 2 :(得分:0)
SL2videoplayer表示它支持流媒体视频。但是,当我尝试将媒体服务广播网址(OnDemand和Live)提供给初始化参数时,没有任何信息显示出来。在init param example page中还会显示正在播放的远程wmv文件。
还有任何与SL 3一起使用的问题吗?