当我们需要在C#中实现视频播放器的时候,可以使用如下几种方法:

一、使用MediaPlayer ActiveX控件

在C#中支持视屏播放器最简单的方式就是插入MediaPlayer控件了,在WPF中还内置了对MediaPlayer的封装MediaElement,可以通过它直接打造一个播放器。

使用MediaPlayer控件的好处是简单,它已经基本封装了常用的功能,只需要很少的几行代码就可以实现媒体播放器的功能。并且,由于操作系统中已经内置了MediaPlayer,不需要额外集成播放器的文件。

不过,它的一个最大的问题是视频支持格式有限。这个问题本身并不严重,在十年前就可以通过安装Media Player Codec Pack 的方式来扩展其支持格式的。对于一些私有格式的视频文件播放,也可以采用这种方案。

这种方式本身还是非常强大的,不过它带来了插件的安装问题了。如果你的程序是被许多客户端所使用的话,还是会有不少的麻烦的。

  • 插件不容易被集成安装
  • 安装完了后又不少参数要设置,并且不容易通过程序来设置它
  • 第三方插件容易和客户端环境冲突,出问题不容易定位和处理
  • 插件更新不方便

当然,如果客户端较少,可以人工维护的话,用MediaPlayer也不失为一种简单易行的方案。

二、使用VLC ActiveX控件

为了免除插件的麻烦,一种替换方案是直接使用一个比较强大的播放器VLC Player,通过它的ActiveX控件实现视频播放的功能。

    

该方法本质上和方法一一样,是调用的ActiveX控件,好处是可以非常快捷的实现播放器的功能。

axVLCPlugin21.playlist.add("mms://new-media/publishingpoint1", "", " :mms-caching=1000");
axVLCPlugin21.playlist.play();

这种方式和前面的方法一样,涉及到第三方程序的安装。不过,使用VLC的好处是,它的安装和更新比MediaPlayer的插件简单一些。出问题的几率也少一些。但一样存在acitvex控件的安装、注册、更新和冲突问题。

三、使用LIB VLC库

这种方式依然是依赖的VLC播放器的功能,不过它并不使用VLC的activex控件,通过pinvoke vlc的dll实现播放器的功能。相当于利用vlc的api实现了一个vlc的播放器。

Github上也有比较完善的对它的封装:https://github.com/ZeBobo5/Vlc.DotNet。如果要详细了解其结构可以参看园子里的这篇入门文章: c#万能视频播放器

这种方式比较成熟了,网上对libvlc的介绍非常多,集成起来还是非常容易的。出问题时相应的定位也比较容易,可以直接用vlc player对比。

这种方式比起直接使用VLC ActiveX来,开发起来要麻烦一些,但是可以实现一些更底层的控制。另外,由于不需要安装部署和更新都是可控的。可以满足绝大部分情况下的视频播放需要。

四、使用FFMPEG库

LibVLC的方式比虽然算简单易用,但是如果我们想实现一些更底层的功能时,此时就要则可以使用ffmpeg库了。实际上,vlc player的底层也是依赖于ffmpeg库的实现的, 他们之间是这样的一个关系。

    

使用ffmpeg的时,就拥有了更加底层的api了,此时可以实现更加强大的功能。并且它是跨平台的,对于移动平台的音视频开发也是非常有帮助的。

关于ffmpeg的介绍,网上还是有比较多的文章的,不过它相关的内容也比较多,后续我也会写一些文章介绍一些我使用过程中的一些心得。

如果只是想实现一个播放器的话,网上也有一些现成的封装的。

https://github.com/unosquare/ffmediaelement

也有文章介绍这个库如何使用:

https://github.com/DG-Wangtao/FFMEVideoPlayer

这个库本身没有什么大问题,基本上可以满足大多数场景的使用。但我试用了一下,一些异常的情况下的处理还是不如vlc来的完善。

在C#中实现视频播放器相关推荐

  1. 在Vue中自制视频播放器(上)

    在Vue中自制视频播放器(上) 前言 初始化组件 开始/暂停按钮 停止按钮 静音按钮 视频播放时间 全屏按钮 源代码 前言 平时大家在浏览视频网站时,会发现各大视频网站都有自己的视频控制组件,虽然浏览 ...

  2. vue中DPlayer视频播放器使用方法

    vue中DPlayer视频播放器使用方法 1通过npm下载 npm install dplayer - s 2在需要使用的组件中导入 import Dplayer from 'Dplayer' 3页面 ...

  3. 网页中嵌入视频播放器代码

    有时候我们会有这样的需求,在网页中嵌入视频播放器,以播放我们的服务器端的视频,下面我将代码贴出来: 嵌入快播播放器: <table width="100%" align=&q ...

  4. 网页中嵌入视频播放器

    有时候我们会有这样的需求,在网页中嵌入视频播放器,以播放我们的服务器端的视频,下面我将代码贴出来: 嵌入快播播放器: <table width="100%" align=&q ...

  5. python在tk界面播放本地视频_如何使用python3在tkinter窗口中插入视频播放器?

    我想用python构建一个视频播放器,但是我的应用程序将有更多的按钮,而不仅仅是play/pause,所以我需要在窗口中插入视频.在 到现在为止我有这个代码:import tkinter import ...

  6. C#中实现视频播放器窗体程序(附源码下载)

    场景 效果 实现 新建窗体程序,然后从工具箱中拖拽DataGridView控件,然后在控件右上角点击新增列,设置好每列 的Name属性和Headertext属性. 新建Video类 项目-右击-新增- ...

  7. java web 嵌套播放器_网页中嵌套视频播放器

    刚做完一个项目,其中有个视频播放的,其实网上的代码都没有错,但感觉不详细,特别是播放文件的路径,有本地的,有当前项目中的,有网络上的,网上很多,但没有一个说明是哪个路径,这里,经过本人测试,不多说了, ...

  8. 网页中嵌套视频播放器

    刚做完一个项目,其中有个视频播放的,其实网上的代码都没有错,但感觉不详细,特别是播放文件的路径,有本地的,有当前项目中的,有网络上的,网上很多,但没有一个说明是哪个路径,这里,经过本人测试,不多说了, ...

  9. Android中视频播放器的选择,MediaPlayer、ExoPlayer、ijkplayer简单对比

    MediaPlayer 在Android系统中对于视频播放器有原生的实现MediaPlayer, 以及将MediaPlayer,SurfaceView封装在一起的VideoView, 两者都只是使用硬 ...

最新文章

  1. Maven 开 发 规 范
  2. CCNA 第一章 网际互联
  3. 1231. The Embarrassed Cryptography
  4. django安装mysql驱动
  5. 最新PHP秒赞,快乐秒赞 php版
  6. 【图像处理】灰度加权距离变换(GWDT)
  7. 2022 数学建模B题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路
  8. python基础(八):进制转换及python中的进制转换方法
  9. Word双面打印自动确定器
  10. Shader初级(纹理坐标篇)
  11. php 图片处理羽化,PS羽化图片边缘方法
  12. 2021美业趋势:包装刺激消费、家用美容仪受追捧、内外兼修的美容时代
  13. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计
  14. 软件工程之项目团队分工
  15. 四级英语作文:拯救动物
  16. 相机照片误删了,该怎么恢复?
  17. 快速剪辑-助力度咔智能剪辑提效实践
  18. 如何将Dicom系列转换为一个Nifti文件(Python)
  19. 英媒说中美网络战“握手言和” 中方攻击显著减少
  20. FreeNAS 安装与配置

热门文章

  1. 微信小程序封装的几个常用功能
  2. 含有hashmap的arraylist排序
  3. 四川大学 opencv 人脸识别 手势识别 研究项目
  4. 面试中的那些 “人情练达即文章”
  5. QML类型:Item
  6. android 程序界面美化,Android性能优化之界面优化总结
  7. onyx mac操作无法执行?onyx for mac如何修复权限?
  8. mqtt协议产品化实现-华为鸿蒙实现mqtt客户端
  9. 制作剧本杀小游戏系统
  10. excel日期函数:EDATE与DATE到底谁更胜一筹