我正在寻找有关什么决定MediaElement
可以播放的媒体格式的详细信息,我似乎无法找到任何明确的来源.我读过某个地方,如果它可以在WMP MediaElement
中播放,那么可以播放它.这是真的?如果是,那么我的下一个问题是我在哪里可以找到WMP的功能和限制?WPF MediaElement
和WMP 之间的联系在哪里?我正在寻找对WPF中这些组件和视频播放的更好理解,并且到目前为止还很难在网上找到任何东西.
我有几个问题:
我在我的WPF应用程序中运行了两个扩展版MediaElement的实例,这取决于它们的稳定性.经过多次测试后,我得出结论,由于仅使用GPU进行解码,它是MediaKit和vlcdotnet之上性能最高的视频播放器.我已经在WVC1(Windows Media Video AP @ l3 VC-1)中编码了视频,用于1080p质量和相对较小的文件大小.最终在几次播放后,视频将无法播放,此时MediaFailed事件将被触发,然后在应用程序重新启动之前完全停止工作.
我的理解是,当它像这样失败时,它是底层Windows Media Player OCX控件中的核心故障,除了完整的应用程序重启之外,它无法以任何方式修复.有没有人为这些问题找到任何可靠的解决方法?妈妈在微软论坛上说过这个词......
我正在努力解决以下问题:
我正在使用MVVM patern构建WP8应用程序.我在view.xaml上有一个媒体元素,以及在我的viewmodel.cs中控制这个媒体元素的逻辑(例如,播放,停止,暂停和音量).
如何使用绑定从我的viewmodel在此媒体元素上播放声音.不破坏MvvM的目的和结构.
(PS:我看过以下帖子,但我不确定如何实现它?链接到帖子)
当我设置我的SmoothStreamingSource然后调用.Play()时,我得到以下异常...
"没有源设置时,不允许播放."
奇怪的是,如果我处理这个异常(如下面的代码所示),视频就会开始播放.奇?根据msdn,SmoothStreamingSource属性自动设置Source属性,所以我不应该得到异常.单步执行代码确认在设置SmoothStreamingSource属性后设置了Source属性.
如果这是内部更大问题的标志,我宁愿不只是处理异常并继续我的快乐方式.
怎么了?我的代码......
try
{
Uri uri = (Uri)((Button)source).Tag;
smoothStreamingMediaElement1.SmoothStreamingSource = uri;
if (smoothStreamingMediaElement1.SmoothStreamingSource != null)
MessageBox.Show(smoothStreamingMediaElement1.SmoothStreamingSource.ToString());
else
MessageBox.Show("SmoothStreamingSource is NULL");
smoothStreamingMediaElement1.Play();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud) MediaElement 支持 RTSP 吗?
我有一个流正在运行,我可以通过以下方式使用 VLC 播放器使用该流:
rtsp://192.168.1.17:554/stream
但是,当尝试使用 Windows Media Player 时,我无法播放它。这就引出了一个问题,MediaElement 支持 RTSP 吗?
我正在 .NET 4.0 上使用 WPF。
我有一个声音播放器类,根本没有任何视觉效果,我正在尝试使用a MediaElement
播放我的声音.在所有测试项目中,它MediaElement
都嵌入在XAML代码中,它工作正常.但是,在我的仅代码版本中,即使文件已经完全加载(我可以在调试器中看到),它根本不会播放任何内容.我正在做以下事情:
public class MySoundPlayer
{
private MediaElement player = new MediaElement();
public MySoundPlayer()
{
player.LoadedBehavior = MediaState.Manual;
player.UnloadedBehavior = MediaState.Stop;
player.Volume = 1.0;
player.MediaEnded += player_MediaEnded;
player.MediaOpened += playerr_MediaOpened;
player.MediaFailed += player_MediaFailed;
}
private void player_MediaEnded(object sender, EventArgs e)
{
player.Stop();
Debug.WriteLine("Stopped");
}
private void player_MediaOpened(object sender, EventArgs e)
{
Debug.WriteLine("Opened");
}
private void player_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
Debug.WriteLine("Failed");
}
public void PlayFile(string fileName, bool loop)
{
player.Source = new Uri(fileName, UriKind.RelativeOrAbsolute);
player.Play();
player.Volume = …
Run Code Online (Sandbox Code Playgroud) 在我的WPF项目中,我创建了一个包含多个MediaElements播放视频的视图.有时,在一个或所有MediaElements之间的任何地方都将无法播放分配给它们的视频,而是显示黑色矩形,或根本不显示.发生这种情况时不会发生MediaFailed事件.MediaOpened事件会在所有MediaElements上出现,即使他们不播放视频也是如此.
我已经为我的显卡安装了最新的驱动程序,这对此问题没有任何影响.
是否有一个程序可用于确保每个MediaElement始终如一地播放?
示例源代码如下.包含视频文件的完整示例项目位于github,网址为https://github.com/duggulous/MediaElementIssueExample
MainWindow.xaml
<Window x:Class="VideoDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="1920" Width="1080">
<Grid Name="rootContainer" Background="Pink">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="404" />
<ColumnDefinition Width="136" />
<ColumnDefinition Width="136" />
<ColumnDefinition Width="134" />
<ColumnDefinition Width="270" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="270" />
<RowDefinition Height="30" />
<RowDefinition Height="412" />
<RowDefinition Height="416"/>
<RowDefinition Height="526"/>
<RowDefinition Height="264"/>
</Grid.RowDefinitions>
<MediaElement x:Name="panel1" Margin="-1"
Grid.Column="0" Grid.Row="0"
Grid.ColumnSpan="2" Grid.RowSpan="2"
Source="media/1-ekg.mp4"
MediaOpened="panel1_MediaOpened"
MediaFailed="panel1_MediaFailed"
MediaEnded="panel1_MediaEnded"/>
<MediaElement x:Name="panel2" Margin="-1"
Grid.Column="2" Grid.Row="0"
Grid.ColumnSpan="3" Grid.RowSpan="1"
Source="media/2-star.mp4"
MediaOpened="panel1_MediaOpened"
MediaFailed="panel1_MediaFailed"
MediaEnded="panel1_MediaEnded"/>
<MediaElement x:Name="panel3" Margin="-1"
Grid.Column="0" Grid.Row="2"
Grid.ColumnSpan="2" …
Run Code Online (Sandbox Code Playgroud) 我有电视连续剧项目,我正在使用mediaelement.但我需要帮助寻求酒吧.如何添加?如何制作像MediaPlayerLauncher一样的搜索栏滑块?
我试着这样想:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<MediaElement x:Name="player1" MediaOpened="player1_MediaOpened" CurrentStateChanged="player1_CurrentStateChanged" />
<ListBox x:Name="alternatifliste" FontSize="20" FontStyle="Italic" FontWeight="Bold" Foreground="White" Margin="677,98,10,153" SelectionChanged="alternatifliste_SelectionChanged" />
</Grid>
<Button x:Name="play" Content="play" HorizontalAlignment="Left" Margin="94,336,0,0" Grid.Row="1" VerticalAlignment="Top" Click="play_Click"/>
<Button x:Name="stop" Content="stop" HorizontalAlignment="Left" Margin="331,336,0,0" Grid.Row="1" VerticalAlignment="Top" Click="stop_Click"/>
<Slider Name="timelineSlider" Margin="0,68,0,244" Grid.Row="1" ValueChanged="timelineSlider_ValueChanged" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
我的项目:
İts代码:
private void player1_MediaOpened(object sender, RoutedEventArgs e)
{
TimeSpan ts …
Run Code Online (Sandbox Code Playgroud) 我实际上开发了一个媒体播放器,并使用了 MediaElement 控件。但是,我对视频质量有很大的问题。对于某些视频,图像变得模糊和像素化。
如您所见,Windows 和带有 MediaElement 的视频播放器的视频质量完全不同。
该视频是一个简单的 .avi ...
有没有办法提高视频质量?
我正在尝试使用此库(RTCMulticonnection)实现WebRTC,并且Type Error
在Safari Tech Preview 11中尝试在视频mediaElement上设置“ srcObject” 时遇到了。
相关代码:
if (isSafari) {
//I've tried the 4 ways below to set the srcObject but all cause a Type Error
// mediaElement['srcObject'] = window.URL.createObjectURL(stream); throws type error
// mediaElement['srcObject'] = stream; throws type error
// mediaElement['src'] = window.URL.createObjectURL(stream);
// mediaElement.srcObject = stream; // throws type error
}
Run Code Online (Sandbox Code Playgroud)
当我打印时mediaElement
,我得到:<video></video>
当我打印时stream
,我得到一个MediaStream
对象。
MediaStream {streamid: "722cfcc7-0687-4265-b266-e81b2abf8398", idInstance: "{\"audio\":{\"mandatory\":{},\"optional\":[{\"bandwidth\":…\":[{\"bandwidth\":4194304},{\"facingMode\":\"user\"}]}}", isVideo: 1, isAudio: false, type: "local", …}
Run Code Online (Sandbox Code Playgroud)
错误 …
mediaelement ×10
wpf ×6
c# ×5
video ×3
xaml ×2
.net ×1
audio ×1
binding ×1
mediastream ×1
mvvm ×1
rtsp ×1
safari ×1
seekbar ×1
silverlight ×1
webrtc ×1