2011-08-19 109 views

答えて

6

http-URL (GET)経由でWCFにメディアオブジェクトを配信させることができる場合は、そのURLをMediaElement.Sourceプロパティに割り当てることができます。http://msdn.microsoft.com/en-us/library/system.windows.controls.mediaelement.source.aspxを参照してください。そのようなURLは可能/利用できない場合の

:ストリームを割り当て

は現在可能ではない - それはhttp://social.msdn.microsoft.com/forums/en-US/wpf/thread/6191ef1a-0010-4294-a5b4-451bbadca33a/http://jmorrill.hjtcentral.com/Home/tabid/428/EntryId/15/WPF-Hackery-Part-I.aspxを参照のDirectShowベース例えば、実現するために、いくつかのハッキングがありますが。

別のオプションは何とかSilverlight MediaElementをホストし、ストリームを取り、それを再生することができますSetSource方法を用いることであろう... http://silverlightviewport.codeplex.com/SourceControl/list/changesetshttp://msdn.microsoft.com/en-us/library/cc190669%28v=vs.95%29.aspx

4

を参照してください私は、これはあなたが求めていますが、できるものではありません知っていますWPFのウィンドウ内にVLC ActiveXコンポーネントをホストし、そのVLCコントロールを使用してストリームに接続し、ストリームを表示します。これが私がWPFでストリーミングをしている様子です。

編集:this page has an example of how to host an ActiveX control inside WPF

+2

VLCをActiveXコンポーネントとして実行しているWPFアプリケーションの例はありますか?私は実際にそれをやる前に、それがどのように見えているのか、それを実行するのに何が関係しているのかを見たいと思います。 – rafale

+0

こんにちはStuartさん、VLCを使用してあなたのサンプルをどこかに投稿して見せることができますか?ありがとう。 –

12

誰もが自分自身のためにこれを見つける時間を浪費する前に:それはWPFアプリケーションでのSilverlightのMediaElementをホストすることは不可能です。その理由は、同じ名前と同じ名前空間を持ちますが、異なる種類のPresentationFramework.dll(WPFでは避けられない)とSystem.Windows.dll(Silverlightバージョン)に表示される多数の種類の1つです。 (誰かがMicrosoftに名前空間を持っている理由を説明する必要があります)

+1

これは本当です。残念ながら、私はこれを難しい方法で見つけなければなりませんでした。 : – rafale

+4

これは1年前の回答ですが、 "同じ名前空間に同じ名前の複数の異なる型"ではありません。 –

+1

Silverlight Webサイトを作成し、そこにMediaElementを使用することは常に可能です –

12

回答が遅れている可能性があります。

はい、WPFメディア要素を使用してメモリストリームからビデオを再生できます。

私は、BoxedAppに万のおかげで箱入りのアプリと呼ばれるサードパーティのコンポーネントを使用していた - http://www.boxedapp.com/boxedappsdk/

私はそれが[]バイトのために動作させるためのコードをほんの少しを更新する必要があります。以下のコード

public MainWindow() 
{ 
    BoxedAppSDK.NativeMethods.BoxedAppSDK_Init(); 

    InitializeComponent(); 
} 

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    var MyFileStream = new CustomFileStream(File.ReadAllBytes(@"wildlife.wmv")); 

    IntPtr ptr = BoxedAppSDK.NativeMethods.BoxedAppSDK_CreateVirtualFileBasedOnIStream(
      @"1.wmv", 
      BoxedAppSDK.NativeMethods.EFileAccess.GenericWrite, 
      BoxedAppSDK.NativeMethods.EFileShare.Read, 
      IntPtr.Zero, 
      BoxedAppSDK.NativeMethods.ECreationDisposition.New, 
      BoxedAppSDK.NativeMethods.EFileAttributes.Normal, 
      IntPtr.Zero, 
      MyFileStream); 

    using (new SafeFileHandle(ptr, true)) 
    { 
     mediaElement1.Source = new Uri(Path.GetFullPath("1.wmv")); 
     mediaElement1.LoadedBehavior = MediaState.Manual; 
     mediaElement1.Play(); 
    } 
} 

public CustomFileStream(byte[] data) 
{ 
    _Stream = new MemoryStream(data); 
    _Length = _Stream.Length; 
    _data = data; 
    _Offset = 0; 
} 

BoxedApp

からCustomFileStreamクラスに以下のコンストラクタをコピーしてWPFアプリケーションを作成し、メディア要素とボタンを追加し、コピー - 箱入りアプリのためのサンプルを追跡し、それはだてくださいあなたは幸せな世界にいます...

QT Playerでも同じことです。

回答に基づいて、提供された情報が十分でない場合は完全な例を追加します。

コーディング....

+0

偉大な答え、ありがとう! – Mafii

0

をWPFのMediaElementのは、内部的にWindowsメディアプレーヤーを使用しているのでハッピー。メディアプレーヤーのバッファ設定をデフォルトのバッファ設定からカスタムに変更した場合。ウィンドウズメディアプレーヤーツールオプションパフォーマンスを開きます。

「バッファ」オプションを選択し、「コンテンツの秒数」を2に設定すると、次のレジストリ値がメディアプレーヤーに追加されます。 ます。HKEY_CURRENT_USER \ Software \ Microsoft \ MediaPlayerの\プ UseDefaultBufferTime = 0 CustomBufferTime = 2000

あなたが変更を加えることDOTNETレジストリクラスを使用することができます。 このリンクを参照してください: https://social.msdn.microsoft.com/Forums/vstudio/en-US/1b4b8fb9-ff8f-4861-8e99-4a7a4fc75596/setting-windows-media-player-properties-in-wpf?forum=wpf#ac879a7f-37bc-4ccc-854d-ab6e047086e5

関連する問題