2016-07-12 6 views
0

これは奇妙です。シンプルなビデオストリームを取得してXAML形式で表示するコードは、実際には非常に単純なはずです。MediaCaptureプレビューが機能しない

ビュー、私は非常にシンプルな、次のようしている、と言うだけで十分:ここ

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Border BorderBrush="White" BorderThickness="1" Width="400" Height="400" Padding="2"> 
     <CaptureElement x:Name="captureElement" Loaded="captureElement_Loaded" Stretch="Uniform"/> 
    </Border> 
    <StackPanel HorizontalAlignment="Left" VerticalAlignment="Bottom" Orientation="Horizontal"> 
     <Button Content="preview start" Tapped="StartPrevTapped" x:Name="prevStart"/> 
     <Button Content="preview stop" Tapped=StopPrevTapped" x:Name="prevStop" IsEnabled="False"/> 
    </StackPanel> 
</Grid> 

は3つの方法です:

MediaCapture mediaCaptureManager = new MediaCapture(); 
    private async void captureElement_Loaded(object sender, RoutedEventArgs e) 
    { 
     var cameraDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); 

     var camera = cameraDevices.First(); 

     await mediaCaptureManager.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = camera.Id }); 
    } 

    private async void StartPrevTapped(object sender, TappedRoutedEventArgs e) 
    { 
     captureElement.Source = mediaCaptureManager; 

     await mediaCaptureManager.StartPreviewAsync(); 
     prevStart.IsEnabled = false; 
     prevStop.IsEnabled = true; 
    } 

    private async void StopPrevTapped(object sender, TappedRoutedEventArgs e) 
    { 
     await mediaCaptureManager.StopPreviewAsync(); 
     prevStart.IsEnabled = true; 
     prevStop.IsEnabled = false; 
    } 

コードが例外を投げるのではなく、 CaptureElementに何も表示されません。何が間違っていますか?

いくつかの追加の注意事項:

  • 私は実際にウェブカメラを持っていないオンラインの開発マシン上でコードを書いています。そのため、私はManyCamの無料版をインストールしました。 TestMyCamは正常に動作しています。
  • 上記と同じ理由により、音声記録装置はありません。
  • this MSDN sample projectで提供されているコードを使用しようとしました。プレビューを表示することもできませんでした。実際、このプロジェクトは修正を加えずに、プレビューを開始することもできませんでした。なぜなら、マイクが接続されていると仮定したからです。

EDIT:

奇妙なことが起こっています。問題は、コード自体ではなく、私が提供された開発マシンの奇妙な構成によって引き起こされたようです。以前にエラーを発生させない

    await mediaCaptureManager.InitializeAsync
  • 、今メッセージThe RPC server is unavailableと例外をスローします。それ以上の情報は提供されません。それはメディアにはまったく関係していないので、メッセージは狂っている!

  • ウェブカメラとVSがインストールされたラップトップを手に入れることができたので、うまくいきました。この問題にどのように取り組むべきかという手掛かりはありません。このノートパソコンでは開発を続けることができず、このテストにしか使用できませんでした。

+0

私はManyCamに慣れていないので、ちょっと観察しています。最初に実際の物理ハードウェアが接続されたデバイスをテストします。 –

+0

@ChrisW。私はそれをしたいと思いますが、ATMはそのようなテストをすることができません。 TestMyCamにはいくつかの問題があるようです(名前が示すように、WebcamをテストできるWebページです)。 ManyCamは何か他のものです(私はリンクを追加しました)。それは簡単なフィードで仮想Webカメラを作成するアプリです。 – Shaamaan

+0

ManyCamを試したことがないので、私はうまくフォークすることが判明したコードを投稿することができました。 'cameraDevices'を反復し、' cameraDevices [i] .IsEnabled'と '.Name'をそれぞれ何枚印刷したら何を得ますか? –

答えて

0

この問題は純粋に提供されている開発機で判明しています。私のローカルマシン上でコードをテストするとき、それは完全にうまく動作します。

これについて考えてみると、これはこの開発機がフィット感を投げたのは初めてではないでしょう。何らかの理由でVSで利用可能な「タブレットシミュレータ」も起動できません...

関連する問題