2009-06-11 8 views
1

私はASP.Net WebアプリケーションのWebページに埋め込まれたSilverlightアプリケーションを開発するためにC#でVSTS 2008を使用しています。 XAMLにMediaElementアイテムを埋め込んでいます。私の質問は、ページをSilverlightメディアプレーヤーに埋め込み、エンドユーザーがMediaElementアイテムを手動で再生/一時停止/停止/巻き戻し/転送するようにすることです。参考資料はありますか?事前にSilverlightメディアプレーヤー

おかげで、 ジョージ

EDIT1:追加し、より正確な要件、実際

は、私が処理したい意味し、手動再生をコントロールしたいプレーヤーの再生/一時停止/停止/巻き戻し/イベントハンドラがMediaElementを制御して何か他のことをするためのコードを追加します。

EDIT2:私のニーズは、2つのオーバーラップしたビデオを再生したいです。バックグラウンドのビデオとカメラとしてフォアグラウンドのビデオとして表示する(右下に配置)。ここで私のコードの変更ですが、私の現在の問題は、背景ビデオだけが再生され、前景の右下ビデオは再生されません。誰にも理由がありますか?ところで

:私の修正コードと現在の仕事はここで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

私のコメントが見られましたか? Pageには、Media ElementにアクセスするためのmediaControls.Mediaプロパティがあります。 –

+0

@Erik、新しい質問、私はコードを読んでいる、そして3人のプレーヤー関連のプロジェクト、videoplayer、mediaplayerとvideoplayerthemedがあります、それらとVideoPlayerWeb Webサイトプロジェクトの間の個々の関係は何ですか? – George2

+0

@エリック、関連するコードを読んで、メディアが再生/停止/一時停止/巻き戻し/転送するように制御されているコードは見つかりませんでした。コードの一部を読むヒント? – George2

答えて

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

がすでにコード内に存在します。起こりたいことをするための方法をさらに追加してください。彼らは2つの別々のXAPパッケージであれば、2が通信するための方法はないでしょう

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

VSTS 2008のSilverlightデザイナーには、メディアプレーヤーコントロールが組み込まれていませんか? – George2

+0

@Erik、あなたがお勧めするプレイヤーは私のすべての目標を達成することはできません。実際には、プレイを手動でコントロールしたいのです。つまり、プレイヤーの再生/一時停止/停止/巻き戻し/転送イベントを処理し、イベントハンドラのコードを追加する必要があります。何か案は? – George2

+1

プレイヤーの外からプレイをコントロールしたいですか? Htmlブリッジはあなたのためです:)詳細を追加するように編集します。 –

1

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から:その後、別のSLプレーヤーでマネージコードからメソッドを呼び出すことができますSilverlightサンドボックスは両方とも個別です。

+0

1. 1つのXAPパッケージにするためのソリューションはありますか? 2. VSTS 2008のSilverlightデザイナーには、メディアプレーヤーコントロールが組み込まれていませんか? – George2

0

SL2videoplayerはストリーミングビデオをサポートしています。しかし、メディアサービスのブロードキャストURL(OnDemandとLive)をinit paramに渡そうとすると、何も表示されませんでした。 init param example pageには、再生中のリモートwmvファイルも表示されます。

SL3でこれを使用する既知の問題はありますか?

関連する問題