2009-06-11 6 views
1

J'utilise VSTS 2008 avec C# pour développer une application Silverlight intégrée dans une page Web d'une application web ASP.Net. J'ai incorporé dans XAML un élément MediaElement. Ma question est, je veux intégrer la page un lecteur multimédia Silverlight, qui pourrait permettre à l'utilisateur final de contrôler l'élément MediaElement manuellement pour - lire/pause/arrêter/rembobiner/transmettre. Y a-t-il des échantillons de références?Silverlight media player

merci à l'avance, George

EDIT1: ajouter des exigences plus précises,

En fait, je veux contrôler le jeu manuellement, ce qui signifie que je veux gérer le jeu de lecteur/pause/arrêt/retour/transférer des événements et ajouter mon code pour les gestionnaires d'événements pour contrôler le MediaElement et faire quelque chose d'autre.

EDIT2: Mes besoins sont, je veux lire deux vidéos superposées. Écran en tant que vidéo d'arrière-plan et caméra en tant que vidéo d'avant-plan (place dans le coin inférieur droit). Voici ma modification de code, mon numéro actuel est, seule la vidéo d'arrière-plan est jouée, la vidéo en premier plan en bas à droite n'est jamais jouée. Est-ce que quelqu'un a des idées pourquoi?

BTW: mon code modifié et les travaux en cours est basé sur http://www.codeplex.com/sl2videoplayer

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

Voici une brève description de mon grand code modifié,

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 (fonction 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

Avez-vous vu mon commentaire? La page a une propriété mediaControls.Media pour accéder à l'élément média. –

+0

@Erik, une nouvelle question, je suis en train de lire le code, et il ya 3 projets liés joueur, lecteur vidéo, mediaplayer et vidéoplayerthemed, quelles sont les différences entre eux et quelle est leur relation individuelle entre le projet de site Web VideoPlayerWeb? – George2

+0

@Erik, j'ai lu le code associé et n'ai pas trouvé de code où le média est contrôlé pour jouer/arrêter/mettre en pause/rembobiner/avancer. Des indices quelle partie du code lire? – George2

Répondre

4

bébé Oh j'ai obtenu le lecteur multimédia pour vous: Sl2 Video Player. MSPL ouvert et génial.

Pour ajouter la possibilité de contrôler le lecteur de manière pragmatique, ajoutez ScriptableMembers. Vous verrez la déclaration d'enregistrement déjà dans le code:

HtmlPage.RegisterScriptableObject("Page", page); 

regarder maintenant un exemple ScriptableMember:

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

existe déjà dans le code. Ajouter plus de méthodes pour faire ce que vous voulez avoir.Ensuite, vous pouvez appeler les méthodes de code managé dans un autre lecteur 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()); 

      } 

ou de javascript:

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

Le concepteur Silverlight dans VSTS 2008 n'a pas de contrôle de lecteur multimédia intégré? – George2

+0

@Erik, le joueur que vous recommandez ne peut pas atteindre tous mes objectifs. En fait, je veux contrôler le jeu manuellement, ce qui signifie que je veux gérer les événements play/pause/stop/rewind/forward du lecteur et ajouter mon code pour les gestionnaires d'événements. Des idées? – George2

+1

Vous voulez contrôler le jeu depuis l'extérieur du lecteur? Le pont Html est pour vous :) Je vais modifier pour ajouter les détails. –

1

S'ils sont deux forfaits XAP séparés, il n'y aura aucun moyen pour les deux à communiquer depuis les sandbox Silverlight à la fois individuellement.

+0

1. Des solutions pour les transformer en un paquet XAP? 2. Le concepteur Silverlight dans VSTS 2008 n'a pas de contrôle intégré du lecteur multimédia? – George2

0

SL2videoplayer indique qu'il prend en charge le streaming vidéo. Mais quand j'essaye de donner une URL de diffusion de services de médias (OnDemand et Live) au param initial, rien ne s'est montré. Dans le init param example page également un fichier wmv distant en cours de lecture est affiché.

Y a-t-il des problèmes connus d'utilisation avec SL 3?

Questions connexes