2009-06-11 14 views
1

Ich verwende VSTS 2008 mit C#, um die Silverlight-Anwendung zu entwickeln, die in die Webseite einer ASP.Net-Webanwendung eingebettet ist. Ich habe in XAML ein MediaElement-Element eingebettet. Meine Frage ist, ich möchte die Seite ein Silverlight Media Player einbetten, der Endbenutzer das MediaElement-Element manuell steuern kann - Wiedergabe/Pause/Stopp/Zurückspulen/Weiterleiten. Gibt es Referenzbeispiele?Silverlight Media Player

Vielen Dank im Voraus, George

EDIT1: Fügen Sie genauere Anforderungen,

Eigentlich möchte ich spielen manuell steuern, was bedeutet, dass ich die Spieler Wiedergabe/Pause/Stopp/Rücklauf/handhaben möchten Ereignisse weiterleiten und meinen Code für die Event-Handler hinzufügen, um das MediaElement zu steuern und etwas anderes zu tun.

EDIT2: Meine Bedürfnisse sind, möchte ich zwei überlappende Videos wiedergeben. Bildschirm als Hintergrundvideo und Kamera als Vordergrundvideo (Platz in der rechten unteren Ecke). Hier ist meine Änderung des Codes, mein aktuelles Problem ist, nur Hintergrund-Video wird gespielt, Vordergrund rechts unten Video wird nie gespielt. Hat jemand irgendwelche Ideen warum?

BTW: meine modifizierten Code und aktuelle Arbeit basiert auf http://www.codeplex.com/sl2videoplayer

http://www.yourfilehost.com/media.php?cat=other&file=sl2videoplayer_24325_new.zip

Hier ist eine kurze Beschreibung meiner großen modifizierten Code,

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 Funktion)

 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

Haben Sie meinen Kommentar gesehen? Die Seite verfügt über eine mediaControls.Media-Eigenschaft für den Zugriff auf das Medienelement. –

+0

@Erik, eine neue Frage, ich lese den Code, und es gibt 3 Spieler bezogene Projekte, Videoplayer, Mediaplayer und Videoplayerthemed, was sind die Unterschiede zwischen ihnen und was sind ihre individuellen Beziehung zwischen VideoPlayerWeb Website-Projekt? – George2

+0

@Erik, ich lese verwandten Code und fand keinen Code, wo Medien zum Abspielen/Stop/Pause/Zurückspulen/Weiterleiten gesteuert wird. Irgendwelche Hinweise welchen Teil des Codes zu lesen? – George2

Antwort

4

Oh Baby, das ich den Media Player bekommen haben für Sie: Sl2 Video Player. MSPL Open Sourcing und genial.

Fügen Sie ScriptableMembers hinzu, um den Player pragmatisch zu steuern. Sie finden die Registrierungserklärung bereits im Code sehen:

HtmlPage.RegisterScriptableObject("Page", page); 

Betrachten Sie nun ein Beispiel ScriptableMember:

[ScriptableMember] 
public void SeekPlayback(string time) 
{ 
    TimeSpan tsTime = TimeSpan.Parse(time); 
    mediaControls.Seek(tsTime); 
} 

bereits im Code vorhanden ist. Fügen Sie weitere Methoden hinzu, um das zu tun, was Sie wollen.Dann können Sie die Methoden von verwaltetem Code in einem anderen SL-Spieler nennen:

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()); 

      } 

oder von javascript:

 var sl = document.getElementById("VideoPlayer"); 
     var content = sl.Content.Page; 
     content.SeekPlayback('55'); 
+0

Silverlight Designer in VSTS 2008 hat keine integrierte Media Player-Steuerung? – George2

+0

@Erik, der von dir empfohlene Spieler kann nicht alle meine Ziele erreichen. Eigentlich möchte ich die Wiedergabe manuell steuern, was bedeutet, dass ich mit den Ereignissen player/pause/stop/rewind/forward umgehen und meinen Code für die Event-Handler hinzufügen möchte. Irgendwelche Ideen? – George2

+1

Sie möchten das Spiel von außerhalb des Players steuern? Die HTML-Brücke ist für Sie :) Ich werde bearbeiten, um die Details hinzuzufügen. –

1

Wenn sie zwei separate XAP-Pakete sind, gibt es keine Möglichkeit für die beiden zu kommunizieren seit Silverlight Sandboxes sowohl einzeln.

+0

1. Irgendwelche Lösungen, um sie zu einem XAP-Paket zu machen? 2. Silverlight-Designer in VSTS 2008 hat keine integrierte Media Player-Steuerung? – George2

0

SL2videoplayer sagt, es unterstützt Streaming-Video. Aber wenn ich versuche, eine Media-Services-Broadcast-URL (OnDemand und Live) an init param 'm' zu geben, ist nichts aufgetaucht. In der init param example page wird auch eine Remote-WMV-Datei wiedergegeben wird.

Gibt es auch bekannte Probleme bei der Verwendung mit SL 3?