VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。它可以支持目前市面上大多数的视频解码,除了Real。
VLC的SDK使用C语言写成,它的解码库部分的基础是FFMpeg,FFMpeg也是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
VLC的SDK是在其客户端的安装文件根目录下,下载完VLC的客户端,并安装后,在其根目录下可以找到,例如
客户端安装在C:\Program Files\VideoLAN\VLC。因为我们是使用C#语言来调用其SDK,所以只需使用到其plugins文件夹和libvlc.dll、libvlccore.dll两个文件。
比如mpeg4解码插件ffdshow,ac3解码插件ac3fliter等。
vlc- vlc 是一个免费且开源的跨平台媒体播放器以及框架,可以播放大多数格式的多媒体文件以及 dvs,音频 cd,vcd,以及各种流媒体协议。
简单说就是dll要和外界通信,就要创建新线程,而要让dll创建新线程又不允许在初始化时创建,就需要先进程间通信去调用那个可以创建新线程的dll内部call。
opencv使用cvcapture时无法解析视频,独立发布时需要在debug或release中放置opencv的dll,未放解码库opencv_ffmpeg.dll时可能导致cvcreatefilecapture(filename)无法解析视频,并出现如下错误: 添加opencv_ffmpeg.dll即可解决。
把libvlc.dll和libvlccore.dll和plugins文件夹放在” bin/Debug”下。
由于两个动态链接库是用C语言写的。所以还要用C#封装一下非托管方法。例如:
需要引用下面两个命名空间:
还有一种是声明式封装引用,值得借鉴。
首先实现一个自定义特性类,定义其属性用法为委托方式。
basesrv.dll ......windows nt base api server dll。
umpnpmgr...dll .(外壳文件夹服务)...dll.intel indeo(r) video yuv codec (文件版本.windows xp 用户 api 客户端 dll。
crypt32.......dll ...dll .., net user....windows nt base api server dll。
riched20....dll .dll ....dll .dll ..windows nt base api 客户端 dll。
例如:
根据自定义特性名称(实际为libvlc方法名称)获取libvlc非托管方法
例如:
释放指针
例如:
定义委托方法
例如:定义libvlc中获取版本信息方法” libvlc_get_version”。
继承抽象类VlcInteropsManager调用委托方法
方法具体含义请参看其c语言的封装库具体内容。
播放本地文件
libvlc_new=>libvlc_media_player_new=>libvlc_media_player_set_hwnd=>libvlc_media_new_path=>libvlc_media_parse=>libvlc_media_player_set_media=>libvlc_media_release=>libvlc_media_player_play=>libvlc_media_player_stop=>libvlc_media_player_release=>libvlc_media_release=>libvlc_release
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-92791-1.html
好好听
在这个颜即正义的大网络时代
去查查马云