2009-06-11 113 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一起使用?