锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C#开源技术 / c#万能视频播放器
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

C#万能视频播放器

随着开源技术的使用,以前很难的工作也容易完成了,比如播放器。播放器的架构是很复杂的,也要处理很多文件格式,是一个团队需要至少一年时间才有可能完成。不过随着开源的兴起,有某些要求不严格的场合下,用开源平台搭建个播放器,效果也不错。本文介绍2个视频播放器的线索

完整格式C#万能视频播放器

下面是锐英源孙老师完成的播放器界面

C#完整万能视频播放器

界面元素有:播放窗口、进度条、时间指示、全屏/窗口切换、暂停、开始、音量/静音按钮和音量大小进度条。界面使用了皮肤技术,比较美观。有需要学习的同学请联系孙老师,QQ396806883,微信ryysoft。

Demo C#万能视频播放器

下面内容来自网络,仅供参考。

本人之前很多的文章中均提到了使用libvlc为播放器内核制作的播放器,也许有些朋友对此感兴趣,于是我用c#写了一个调用libvlc api实现的万能视频播放器,与大家分享一下。说它“万能”,当然是因为我们站在了vlc的肩膀上。

  vlc是一个强大而且开源的多媒体播放器,也可以说是一个多媒体平台。它支持非常广泛的媒体格式的本地播放,完全可以媲美mplayer,其对视频网络流的处理能力更是非常强悍。libvlc就是指的vlc的核心,它向外提供了一系列的接口,通过接口,来实现视频播放等复杂的功能。libvlc对外提供了c语言的接口,也有其他语言,包括.net的绑定,在其官网上就有,不过已经“年久失修”。我之前用Qt, MFC实现过基于libvlc的播放器,不过鉴于园子里c#开发人员较多,遂用c#封装了一下libvlc的API接口,并实现了一个视频播放器。

  先上鉴赏图,外表很简单,不过,外表不是重点

demoC#万能视频播放器

  首先是libvlc的一些导出函数,我在注释里对它们的功能都有说明

 1     class VlcPlayer
 2     {
 3         private IntPtr libvlc_instance_;
 4         private IntPtr libvlc_media_player_;
 5 
 6         private double duration_;
 7 
 8         public VlcPlayer(string pluginPath)
 9         {
10             string plugin_arg = "--plugin-path=" + pluginPath;
11             string[] arguments = { "-I", "dummy", "--ignore-config", "--no-video-title", plugin_arg };
12             libvlc_instance_ = LibVlcAPI.libvlc_new(arguments);
13 
14             libvlc_media_player_ = LibVlcAPI.libvlc_media_player_new(libvlc_instance_);
15         }
16 
17         public void SetRenderWindow(int wndHandle)
18         {
19             if (libvlc_instance_ != IntPtr.Zero && wndHandle != 0)
20             {
21                 LibVlcAPI.libvlc_media_player_set_hwnd(libvlc_media_player_, wndHandle);
22             }
23         }
24 
25         public void PlayFile(string filePath)
26         {
27             IntPtr libvlc_media = LibVlcAPI.libvlc_media_new_path(libvlc_instance_, filePath);
28             if (libvlc_media != IntPtr.Zero)
29             {
30                 LibVlcAPI.libvlc_media_parse(libvlc_media);
31                 duration_ = LibVlcAPI.libvlc_media_get_duration(libvlc_media) / 1000.0;
32 
33                 LibVlcAPI.libvlc_media_player_set_media(libvlc_media_player_, libvlc_media);
34                 LibVlcAPI.libvlc_media_release(libvlc_media);
35 
36                 LibVlcAPI.libvlc_media_player_play(libvlc_media_player_);
37             }
38         }
39 
40         public void Pause()
41         {
42             if (libvlc_media_player_ != IntPtr.Zero)
43             {
44                 LibVlcAPI.libvlc_media_player_pause(libvlc_media_player_);
45             }
46         }
47 
48         public void Stop()
49         {
50             if (libvlc_media_player_ != IntPtr.Zero)
51             {
52                 LibVlcAPI.libvlc_media_player_stop(libvlc_media_player_);
53             }
54         }
55 
56         public double GetPlayTime()
57         {
58             return LibVlcAPI.libvlc_media_player_get_time(libvlc_media_player_) / 1000.0;
59         }
60 
61         public void SetPlayTime(double seekTime)
62         {
63             LibVlcAPI.libvlc_media_player_set_time(libvlc_media_player_, (Int64)(seekTime * 1000));
64         }
65 
66         public int GetVolume()
67         {
68             return LibVlcAPI.libvlc_audio_get_volume(libvlc_media_player_);
69         }
70 
71         public void SetVolume(int volume)
72         {
73             LibVlcAPI.libvlc_audio_set_volume(libvlc_media_player_, volume);
74         }
75 
76         public void SetFullScreen(bool istrue)
77         {
78             LibVlcAPI.libvlc_set_fullscreen(libvlc_media_player_, istrue ? 1 : 0);
79         }
80 
81         public double Duration()
82         {
83             return duration_;
84         }
85 
86         public string Version()
87         {
88             return LibVlcAPI.libvlc_get_version();
89         }
90     }

封装为VlcPlayer之后,调用就会变得非常简单。

  • 首先确定好vlc的插件目录
  • 在你的代码里创建VlcPlayer对象
  • 调用SetRenderWindow,以设置视频显示的窗口,否则会变成一个独立的播放窗口
  • 调用PlayFile,即可开始播放

    demoC#万能视频播放器代码片段

  程序做好之后,需要带上libvlc.dlllibvlccore.dll,这两个是vlc的播放内核,因为vlc把编解码和格式解析的支持设计成了插件的形式,所以还必须要带上vlc的plugins目录里的插件。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内