我正在使用 VSTS 2008 和 C# 来开发嵌入 ASP.Net Web 应用程序网页中的 Silverlight 应用程序。我已在 XAML 中嵌入了一个 MediaElement 项目。我的问题是,我想在页面中嵌入一个 Silverlight 媒体播放器,它可以让最终用户手动控制 MediaElement 项目——播放/暂停/停止/倒带/前进。有引用样本吗?
提前致谢, 乔治
EDIT1:添加更准确的要求,
实际上,我想手动控制播放,这意味着我想处理播放器播放/暂停/停止/快退/前进事件,并添加事件处理程序的代码来控制 MediaElement 并执行其他操作。
EDIT2:我的需求是,我想播放两个重叠的视频。屏幕作为背景视频,摄像机作为前景视频(位于右下角)。这是我对代码的修改,我当前的问题是,仅播放背景视频,从未播放前景右下视频。有人知道为什么吗?
顺便说一句:我修改的代码和当前的工作基于 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();
}
页面.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);
}
默认.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');
关于c# - Silverlight 媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982205/