2009-06-11 77 views
1

我使用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" /> 
+1

您是否看到我的评论?该页面具有用于访问媒体元素的mediaControls.Media属性。 – 2009-06-11 20:10:54

+0

@Erik,一个新问题,我正在阅读代码,并且有3个播放器相关的项目,videoplayer,mediaplayer和videoplayerthemed,它们之间有什么区别以及VideoPlayerWeb网站项目之间有什么个人关系? – George2 2009-06-12 04:07:09

+0

@Erik,我读了相关的代码,并没有找到代码来控制媒体播放/停止/暂停/后退/转发。任何提示哪部分代码要读取? – George2 2009-06-12 04:08:11

回答

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

如果它们是两个独立的XAP包,就没有办法为两个通信因为Silverlight沙盒都是单独的。

0

SL2videoplayer表示它支持流媒体视频。但是当我尝试给媒体服务广播网址(OnDemand和Live)初始化参数'm'时,什么都没有出现。在init param example page也显示正在播放的远程wmv文件。

也有任何已知的问题与SL 3一起使用?