WPF-Stylet框架播放流媒体资源

1.想实现在在程序中点击按钮打开视频,但是又不许客户下载,这怎么实现呢?

后来我想到了可以用阿里云服务器的OSS对象存储来存储视频,然后通过URL链接播放,具体怎么实现呢?

我已经把视频都放上去了,接下来就是如何播放。

第一次思路:

通过URL链接把视频缓存到本地电脑里有个临时文件夹(系统自己可以清理),然后在程序中获取这个临时文件夹的路径,再播放。我用的是wpf默认的播放器MediaElement,MediaElement不支持播放流媒体,所以每次都得等视频下载完才能播放,这样的做法可以应付一些小视频,但是几百MB的视频就不行了。

第二次思路:

1.研究百度网盘播放视频的原理

百度网盘播放视频的原理是基于流媒体技术,通常采用以下步骤:

  • 视频上传和存储: 用户将视频文件上传到百度网盘服务器。在服务器上,视频文件被存储并分配一个唯一的资源标识符(URL 或类似的标识符)。

  • 视频编码和格式转换: 在服务器上,上传的视频文件可能会被进行编码和格式转换,以适应流媒体播放的需求。常见的格式可能包括 MP4、H.264 等,以及相应的音频格式。

  • 生成播放地址: 一旦视频被成功处理,服务器将生成一个用于访问该视频的播放地址。这个地址通常是一个 URL,用户可以通过该地址访问视频。

  • 流媒体传输: 当用户在百度网盘上点击播放按钮时,网页应用程序会向服务器发起请求,请求视频资源。服务器响应该请求,开始将视频以流媒体的形式传输到用户的设备。

  • 客户端播放器: 在用户设备上,浏览器或应用程序内置的播放器会接收到流媒体,并进行实时播放。这通常包括了一些缓冲机制,以确保视频在播放时不会中断。

2.由于wpf默认的播放器MediaElement不支持流媒体,所以用的是LibVLCSharp控件,LibVLCSharp控件支持流媒体播放

xmal:

  <vlc:VideoView  x:Name="videoView" MediaPlayer="{Binding mediaPlayer}"  Margin="0,271,715,0"/>

ViewModel层:

// 初始化 LibVLC
Core.Initialize();

// 创建 LibVLC 实例
libVLC = new LibVLC();

// 创建 MediaPlayer
mediaPlayer = new MediaPlayer(libVLC);


// 设置流媒体地址
var media = new Media(libVLC, new Uri("https://vbcbc//vd.mp4"));

// 设置 MediaPlayer 的播放源
mediaPlayer.Media = media;

然后再次点播放按钮,直接就播放了,一点缓冲都没有!

下载LibVLC出现的问题:

vs2017出现“Failed to load required native libraries. Have you installed the latest LibVLC packag”解决办法_failed to load the required native library-CSDN博客