これは奇妙です。シンプルなビデオストリームを取得して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:
奇妙なことが起こっています。問題は、コード自体ではなく、私が提供された開発マシンの奇妙な構成によって引き起こされたようです。以前にエラーを発生させない
、今メッセージ
The RPC server is unavailable
と例外をスローします。それ以上の情報は提供されません。それはメディアにはまったく関係していないので、メッセージは狂っている!ウェブカメラとVSがインストールされたラップトップを手に入れることができたので、うまくいきました。この問題にどのように取り組むべきかという手掛かりはありません。このノートパソコンでは開発を続けることができず、このテストにしか使用できませんでした。
await mediaCaptureManager.InitializeAsync
私はManyCamに慣れていないので、ちょっと観察しています。最初に実際の物理ハードウェアが接続されたデバイスをテストします。 –
@ChrisW。私はそれをしたいと思いますが、ATMはそのようなテストをすることができません。 TestMyCamにはいくつかの問題があるようです(名前が示すように、WebcamをテストできるWebページです)。 ManyCamは何か他のものです(私はリンクを追加しました)。それは簡単なフィードで仮想Webカメラを作成するアプリです。 – Shaamaan
ManyCamを試したことがないので、私はうまくフォークすることが判明したコードを投稿することができました。 'cameraDevices'を反復し、' cameraDevices [i] .IsEnabled'と '.Name'をそれぞれ何枚印刷したら何を得ますか? –