使用MediaElement从UDP / RTSP播放视频?

时间:2015-07-14 19:02:21

标签: c# wpf media-player

是否可以使用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”事件创建处理程序后,我能够收到此错误:“媒体文件下载失败”,内部异常为System.Runtime.InteropServices.COMException,HResult为0xC00D0FEA。我引用了这个:MediaPlayer cannot play file names without an extension并尝试对注册表进行一些更改,但它们似乎没有解决问题。再次,任何建议表示赞赏。随着我获得更多信息,我将继续更新此主题。

3 个答案:

答案 0 :(得分:2)

请参阅FFME,这是基于FFmpeg的MediaElement的几乎免费替代品。

答案 1 :(得分:1)

经过大量研究后,似乎我试图做的事情可能无法实现。 WPF MediaElement控件(和Windows Media Player)似乎支持通过网络播放视频,但不支持从流中播放视频。请参阅MSDN上的以下主题:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e90b7e73-62b2-40b2-a725-4b60e02d65a1/play-video-stream-in-wpf?forum=wpf

我仍然在寻找能够播放视频流的WPF控件,但我还没有找到任何东西。

答案 2 :(得分:0)

老问题,但最近发现 ffmediaelement (Install-Package FFME.Windows) 适用于 MISB 流。到目前为止只使用了一天,唯一的问题是如果流媒体源循环回到视频文件的开头需要重置控件。需要单独下载 FFMPEG DLL。

https://github.com/unosquare/ffmediaelement