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博客