使用 MediaElement 播放来自 UDP/RTSP 的视频?
Play video from UDP/RTSP using MediaElement?
是否可以使用 WPF 的 MediaElement 控件播放从 UDP/RTSP 流式传输的视频?在我的测试期间,我试图将包含 UDP 流的 URI 传递给 MediaElement 播放器,但是当我启动我的应用程序时,媒体播放器是空白的,就好像没有媒体源一样。这是我的示例代码:
MainWindow.xaml.cs:
public partial class MainWindow: Window
{
public MainWindow()
{
InitializeComponent();
VideoMediaElement.Source = new Uri("udp:\\@12.3.4.567:890");
VideoMediaElement.Play();
}
}
MainWindow.xaml:
<Window x:Class="MyApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Grid>
<MediaElement Margin="5,5,5,5" Grid.Row="1" x:Name="VideoMediaElement" LoadedBehavior="Manual" />
</Grid>
我在这里明显遗漏了什么吗?我已经使用存储在我的文件系统中的视频测试了此设置,它播放时没有任何问题 - 只是流式传输不起作用。
如果使用 MediaElement 无法做到这一点,我愿意接受有关我可以改用的控件的建议。但是,我需要一个纯 WPF 且不依赖于任何 WinForms 互操作的控件。任何建议表示赞赏。
更新:为 "MediaFailed" 事件创建处理程序后,我能够收到此错误:"Media file download failed",内部异常为 System.Runtime.InteropServices.COMException,HResult 为 0xC00D0FEA。我引用了这个:MediaPlayer cannot play file names without an extension 并尝试对注册表进行一些更改,但它们似乎并没有解决问题。再次感谢任何建议。当我获得更多信息时,我将继续更新此线程。
经过大量研究,我尝试做的事情似乎是不可能的。 WPF MediaElement 控件(和 Windows 媒体播放器)似乎支持通过网络播放视频,但不支持从流播放视频。请参阅 MSDN 上的以下主题:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e90b7e73-62b2-40b2-a725-4b60e02d65a1/play-video-stream-in-wpf?forum=wpf
我仍在寻找可以从流中播放视频的 WPF 控件,但我还没有找到任何东西。
参见 FFME,它几乎是 MediaElement 的直接替代品,基于 FFmpeg。
老问题,但最近发现 ffmediaelement (Install-Package FFME.Windows) 对于 MISB 流工作得很好。到目前为止只使用了一天,唯一的问题是如果流媒体源循环回到视频文件的开头,则需要重置控件。需要单独下载 FFMPEG DLL。
是否可以使用 WPF 的 MediaElement 控件播放从 UDP/RTSP 流式传输的视频?在我的测试期间,我试图将包含 UDP 流的 URI 传递给 MediaElement 播放器,但是当我启动我的应用程序时,媒体播放器是空白的,就好像没有媒体源一样。这是我的示例代码:
MainWindow.xaml.cs:
public partial class MainWindow: Window
{
public MainWindow()
{
InitializeComponent();
VideoMediaElement.Source = new Uri("udp:\\@12.3.4.567:890");
VideoMediaElement.Play();
}
}
MainWindow.xaml:
<Window x:Class="MyApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="300" Width="300">
<Grid>
<MediaElement Margin="5,5,5,5" Grid.Row="1" x:Name="VideoMediaElement" LoadedBehavior="Manual" />
</Grid>
我在这里明显遗漏了什么吗?我已经使用存储在我的文件系统中的视频测试了此设置,它播放时没有任何问题 - 只是流式传输不起作用。
如果使用 MediaElement 无法做到这一点,我愿意接受有关我可以改用的控件的建议。但是,我需要一个纯 WPF 且不依赖于任何 WinForms 互操作的控件。任何建议表示赞赏。
更新:为 "MediaFailed" 事件创建处理程序后,我能够收到此错误:"Media file download failed",内部异常为 System.Runtime.InteropServices.COMException,HResult 为 0xC00D0FEA。我引用了这个:MediaPlayer cannot play file names without an extension 并尝试对注册表进行一些更改,但它们似乎并没有解决问题。再次感谢任何建议。当我获得更多信息时,我将继续更新此线程。
经过大量研究,我尝试做的事情似乎是不可能的。 WPF MediaElement 控件(和 Windows 媒体播放器)似乎支持通过网络播放视频,但不支持从流播放视频。请参阅 MSDN 上的以下主题:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e90b7e73-62b2-40b2-a725-4b60e02d65a1/play-video-stream-in-wpf?forum=wpf
我仍在寻找可以从流中播放视频的 WPF 控件,但我还没有找到任何东西。
参见 FFME,它几乎是 MediaElement 的直接替代品,基于 FFmpeg。
老问题,但最近发现 ffmediaelement (Install-Package FFME.Windows) 对于 MISB 流工作得很好。到目前为止只使用了一天,唯一的问题是如果流媒体源循环回到视频文件的开头,则需要重置控件。需要单独下载 FFMPEG DLL。