我正在开发 WPF 桌面应用程序、Windows 10、Visual Studio 2015。
当我转到它播放的视频的位置时,我有以下代码。
XAML:
<Window x:Class="ReconocimientoVoz.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ReconocimientoVoz"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="28*"/>
<ColumnDefinition Width="19*"/>
</Grid.ColumnDefinitions>
<Rectangle x:Name="rectColor" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="55,46,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Label x:Name="lblColor" Content="lblColor" HorizontalAlignment="Left" Margin="144,234,0,0" VerticalAlignment="Top" Width="179" Grid.ColumnSpan="2"/>
<Button x:Name="btnEscuchar" Content="Escuchar" HorizontalAlignment="Left" Margin="62,234,0,0" VerticalAlignment="Top" Width="75" Grid.Column="1" Click="btnEscuchar_Click"/>
<Label x:Name="label" Content="Color:" HorizontalAlignment="Left" Margin="98,234,0,0" VerticalAlignment="Top"/>
<MediaElement x:Name="mediaPlayer" Grid.Column="1" HorizontalAlignment="Left" Height="161"
Margin="0,35,0,0" VerticalAlignment="Top" Width="200" LoadedBehavior="Play"/>
</Grid>
在 Mediaelement 中,在 Play 中配置 LoadedBehavior,以便在提供视频路径时,它可以显示在控件中。
C#
private void btnEscuchar_Click(object sender, RoutedEventArgs e)
{
lblColor.Content = string.Empty;
try
{
escucha.SetInputToDefaultAudioDevice();
escucha.LoadGrammar(new DictationGrammar());
//escucha.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(lector);
escucha.SpeechRecognized += Escucha_SpeechRecognized;
escucha.SetInputToDefaultAudioDevice();
escucha.RecognizeAsync(RecognizeMode.Multiple);
}
catch (InvalidOperationException ex)
{
MessageBox.Show(ex.Message, "Aviso");
}
}
private void Escucha_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
foreach (var palabra in e.Result.Words)
{
lblColor.Content = palabra.Text;
if (palabra.Text == "rojo")
{
rectColor.Fill = new SolidColorBrush(Colors.Red);
}
else if (palabra.Text == "azul")
{
rectColor.Fill = new SolidColorBrush(Colors.Blue);
}
else if (palabra.Text == "amarillo")
{
rectColor.Fill = new SolidColorBrush(Colors.Yellow);
mediaPlayer.Source = new Uri(@"D:\PruebasCSharp\ReconocimientoVoz\Video\hola.wmv");
}
else if (palabra.Text == "hola")
{
mediaPlayer.Source = new Uri(@"D:\PruebasCSharp\ReconocimientoVoz\Video\hola.wmv");
//mediaPlayer.Play();
}
}
}
满足条件时,它调用视频路径,但在 MediaElement 控件中不播放任何内容。
我不知道会发生什么,它什么都不播放?我需要对控件或表单进行任何额外的配置吗?我希望你能提前帮助我谢谢。
注意:我进行了简单的测试,其中只对 XAML 进行了编程,但我无法重现任何内容,这就是为什么我认为控件或窗口(窗体)中都必须缺少某些配置的原因。我只能听到视频的音频,但不显示图像。
我在使用 MediaElement 控件时遇到了太多问题,我已经设法使用Sergio Parra向我推荐的 Vlc.Dotnet 解决了它。
实现如下:
然后将命名空间添加到 XAML 并添加控件。
将以下代码添加到 .cs 文件中
MediaElement 组件使用 Windows 编解码器机制(有关 DirectShow 和 Windows Media Foundation 的更多详细信息,请参阅其内部工作原理)。基本上每个视频都有一个“容器”格式(mkv、avi 等),它说明视频的每个部分(流)是如何存储的。视频包含多个流(视频、音频、字幕),每个流都以独立于一般容器格式的特定格式(mpeg、divx、h264、mp3、aac 等)编码。允许您处理所有这些格式的 Windows 组件通常称为“编解码器”(编码器/解码器或压缩器/解压缩器)。
默认情况下,Windows 支持许多容器和音频/视频格式,但有些格式默认不支持,需要安装其他软件。
对于您的特定情况,请尝试使用免费的“独立”播放器(例如videolan 播放器)播放的视频,它不使用 Windows 编解码器,如果有效,您的视频需要一个特殊的编解码器(解码器)默认情况下不安装。
为了更好地诊断应用程序的问题,请使用您事先知道的在您的系统上运行良好的视频进行测试,例如使用默认提供的 Windows Media Player。