当前位置:   article > 正文

VLC简介

vlc

VLC原指VideoLAN客户端(VideoLANClient),是一款开源的、跨平台的、可扩展的、多媒体播放器、流媒体服务器及框架,可播放大多数多媒体文件,以及DVD、音频CD、VCD及各类流媒体协议,现更名为VLC media player,最新版本为2.2.0。

VideoLanServer(VLS)的功能已经合并到VLC中,所以VLC不仅仅是一个音/视频播放器,它也可以作为小型的视频服务器(或作为流媒体服务器使用),更可以一边播放一边转码,把视频流发送到网络上。VLC最为突出的就是网络流的播放功能。

VLC通常不影响也不依赖于系统中自带的解码器。

VLC的license是GPL

VLC采用多线程并行解码架构,线程之间通过单独的一个线程控制所有线程的状态,解码器采用filter模式,组织方式为模块架构

VLC播放一个视频大致分为4个步骤

1)access,从不同的源获取流;

2)demux,就是把通常合在一起的音频和视频分离(还有可能的字幕);

3)decode,解码,包括音频和视频的解码;

4)output,输出,也分为音频和视频的输出(aout和vout)。

VLC能够处理的流类型包括:

1)ES(ElementaryStreams);

2)PS(Program Stream);

3)TS(Transport Stream)

下面简单说明下源码中各个目录的作用,其实源码中大部分每个.h、.c文件的开始处都对此文件的作用进行了简单描述:

1、/autotools:

2、/bin:此目录下的winvlc.c文件用于生成.exe执行文件;

3、/compat:生成libcompat库的源文件,此目录下包含了与平台相关的一些代码,比如Windows、POSIX、BSD等;

4、/contrib:第三方库,此目录下包含很多空的目录,如果要想编译这些第三方库,需要自己单独下;

5、/doc:一些log等说明信息;

6、/extras:一些额外的文件;

7、/include:所有头文件的集合;

8、/lib:生成libvlc库的源文件;

9、/m4:宏处理器;

10、/modules:VLC的模块部分,这些模块只在程序载入它们时有效;每一个模块,可提供不同的功能,它们适合特定文件或某一特定的环境;此外,audio_output/video_output/interface模块都写成了可跨平台的代码,方便支持新的平台。如果你想编译某个模块可以通过:% ./configure --enable-module_name ;如果不想编译某个模块可以通过: %  ./configure  --disable-module_name ;如果想得到某个模块的帮助信息,可通过:%vlc --advanced -p module_name ;    

11、/modules/access:从不同的源获取流;

12、/modules/access_output:以不同的形式输出流;

13、/modules/arm_neon:arm架构,一些汇编代码;

14、/modules/audio_filter:各种音频滤波器;

15、/modules/audio_mixer:音量设置模块;

16、/modules/audio_output:音频输出模块,声音将会输出到你的音频系统中;

17、/modules/codec:音视频编解码模块;

18、/modules/control:动作控制功能,如鼠标手势控制vlc等;

19、/modules/demux:将合在一起的音频和视频分离(还有可能包括字幕);

20、/modules/gui:不同平台的用户界面模块;

21、/modules/hw/vdpau:VDPAU(VideoDecode and Presentation API for Unix)的API可以让视频播放器把一部分的视频解码和视频图像补偿交给GPU,最初由NVIDIA开发;

22、/modules/lua:与Lua脚本语言相关的模块;

23、/modules/meta_engine:

24、/modules/misc:杂项,包括webservice解析、xml解析、playlist输出模块等;

25、/modules/mux:将视频、音频、字幕合并为某一个视频格式,如.avi、.mp4等;

26、/modules/notify:notificationplugin;

27.    /modules/packetizer:音视频打包模块,如H264/AVC、MLP/TrueHD等;

28.    /modules/services_discovery:servicesdiscovery module;

29.    /modules/stream_filter:streamfilter;

30.    /modules/stream_out:流输出模块;

31.    /modules/text_renderer:文本渲染模块;

32.    /modules/video_chroma:图像格式转换默认,如YUV到RGB等;

33.    /modules/video_filter:视频各种滤波模块,例如对渲染的图像进行色度、对比度、饱和度的调整等;

34.    /modules/video_output:视频输出模块,允许VLC显示视频到你的屏幕上;

35.    /modules/video_splitter:视频分割模块;

36.    /modules/visualization:可视化模块,包括projectM、GOOM等;

37.    /po:i18n(语言翻译)文件;

38.    /share:图标、脚本等等;

39.    /src:生成libvlccore库的源文件;

40.    /src/android:android平台专用模块;

41.    /src/audio_output:音频输出模块;

42.    /src/config:配置模块,从命令行和配置文件加载配置,提供功能模块的读取和写入配置;

43.    /src/darwin:Mac(Darwin)平台专用模块;

44.    /src/extras:一些平台的特殊代码;

45.    /src/input:获取流模块,建立并读取一个输入流,并且分离其中的音频和视频,然后把分离好的音频和视频流发送给解码器;

46.    /src/interface:用户接口模块,提供代码中可以调用的接口;

47.    /src/misc:libvlc库使用的其它部分功能,是被其它模块使用的杂项,如数据库管理、CPU检测、图像的读写等;

48.    /src/modules:模块管理;

49.    /src/network:提供网络接口(socket管理,网络错误等);

50.    /src/os2:OS/2平台专用模块;

51.    /src/playlist:播放列表控制模块;

52.    /src/posix:与POSIX(可移植操作系统接口)相关的模块;

53、/src/stream_output:输出音频流和视频流到网络;

54.    /src/test:libvlccore库的测试模块;

55.    /src/text:字符集;

56.    /src/video_output:初始化视频播放器,把从解码器得到的视频画面转化格式(从YUV转为RGB)然后播放它们;

57.    /src/win32:windows平台专用模块;

58.    /test:一些脚本和测试代码;

VLC中所有的模块均以动态库(插件)方式来管理,就连main模块也不例外。可以在windows下查看VLC安装目录下的plugin目录,里面包含了所有的动态库。当VLC启动的时候,主模块采用动态加入的方式。采用宏定义将该模块的入口函数导出,以让其它函数调用,同时入口函数里面初始化了该模块相关的所有函数指针。

VLC采用全模块化结构,在系统内部,通过动态的载入所需的模块,放入一个module_bank的结构体中统一管理,连VLC的Main模块也是通过插件的方式动态载入的(通过module_InitBank函数在初始化建立module_bank时)。对于不支持动态载入插件的系统环境中,VLC也可以采用builtin的方式,在VLC启动的时候静态载入所需要的插件,并放入module_bank统一管理。VLC无论是作为流媒体服务器还是多媒体播放器,它的实质就是一个”播放器”,它实质处理的是ES、PES、PS、TS等流间的转换、传输与显示。

可以通过git下载最新源码:git  clone git://git.videolan.org/vlc.git

从网上https://github.com/sunqueen?tab=repositories下载最新的vlc-2.2.0-rc2.32-2013配置好的vs2013工程,有win32 debug和release两种配置,其中debug模式已经配置好,release模式许多工程模块还没有配置,要想运行release模式需要自己仿照着debug模式配置。你可以直接运行debug模式,重新编译整个winvlc工程,会在/vlc-2.2.0-rc2.32-2013/Debug目录下生成相应的静态库、动态库以及winvlc.exe文件,除direct3d工程没有编译成功外,其它均能正确生成,此direct3d工程没有编译成功的原因是机子本身并没有direct3d环境导致,此库并不是必须的,先不用去理会。运行winvlc.exe导入一个视频文件可以播放,后来发现此winvlc.exe和从官网下载的/vlc-2.2.0/vlc.exe,有时显示效果不一致,后面会进一步分析下原因。

转自:https://blog.csdn.net/fengbingchun/article/details/44782279?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169769891116800185822884%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169769891116800185822884&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-44782279-null-null.nonecase&utm_term=vlc&spm=1018.2226.3001.4450


VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。它融合了FFmpeg计划的解码器与libdvdcss程序库使其有播放多媒体文件及加密DVD影碟的功能。

2022年8月,VLC播放器已在印度被禁止使用 ,该禁令于今年年初生效,然而,VideoLAN和印度当局都没有提供关于禁令的任何信息。

播放器介绍

简单、快速、强大的媒体播放器。

VLC Media Player 是一款可播放大多数格式,而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、卫星数字电视频道、地面数字电视频道(digital terrestrial television channels)、在许多作业平台底下透过宽带 IPv4、IPv6 网络播放线上影片;此软件开发项目是由法国学生所发起的,参与者来自于世界各地,设计了多平台的支持,可以用于播放网络串流及本机多媒体档案之播放。

VideoLAN计划

VideoLAN计划是一个开发多媒体播放程序的计划。原本针对流式影音有两个程序—VideoLAN Client (VLC) 及 VideoLAN Server (VLS)—然而大部分的VLS功能都集成进VLC,所以就将程序名称改为VLC多媒体播放器。

这个计划原本是巴黎中央理工学院学生的专题计划。在2001年2月1日以GPL发布后,计划成员横跨二十多个国家。

VLC Media Playe正在播放Windows7默认视频

这个播放软件的三角锥图标是源自于交通三角锥。图标是2006年高分辨率的CGI页面Computer-generated imagery并不存在,英语维基百科对应页面为电脑成像。用以取代先前手绘的低分辨率图标。

特色

VLC多媒体播放器具有跨平台的特性,它有Linux、Microsoft Windows、Mac OS X、BeOS、BSD、Pocket PC及Solaris的版本。

与另一个著名播放器Mplayer(使用Gtk+库)不同的是,VLC使用了Qt库来编写Linux的用户操作界面。

在Windows,Linux以及某些平台,VLC提供了一个Mozilla扩充包,使得某些网站上附带的QuickTime及Windows Media多媒体文件,可以在非微软或苹果计算机的操作系统中,正常显示于Mozilla的浏览器下。

从版本0.8.2开始,VLC亦提供了一个ActiveX的扩充包,使用户可以在Internet Explorer下,正常显示某些网站上附带的QuickTime及Windows Media多媒体文件。

从1.0.5版本开始VLC的ActiveX的扩充包已经放弃js接口的调用。

VLC还有一个非常好的功能——支持播放某些没有下载完成的视频文件部份内容。

更新日志

v2.1.4:

分配器:

* 修复了WMV在多个压缩载荷和空载荷下的问题

视频输出:

* 修正了Windows系统下的字幕渲染

Mac OS X:

* 修复了DVD的记忆播放

* 修复了在OS X 10.9系统中在使用记忆播放时产生的误导性消息

* 修复了硬件加速memleaks

重大历史版本

v2.1.0:

重要的变化:

*许多模块的许可证从GPLv2+改变lgplv2.1+

*停止对基于PowerPCMac的支持;VLC在v2.1.0版本后需要MACOS X 10.6+

此外,官方的构建将64位的版本

*--with-tuning和--without-tuning选项被移除;调整

对于一个特定的处理器类型的汇编,需要手动设置CFLAGS

v2.0.0:

重要的变化:

*libvlc和libvlccore许可证已经改变lgplv2.1版++

*为了避免网址和文件名冲突,开始/结束的标题/章节改用#分隔,而不是用@

*40+——*缓存选项进行了简化和降低到4选项:

————文件缓存指定的本地文件缓存,

————网络缓存指定网络资源缓存,

————活缓存指定缓存捕获设备

————盘缓存指定本地光学媒体缓存。

所有的值都是在以前的版本,以毫秒为单位表示。

*HTTP服务器IP地址,端口,和TLS配置集中:

*RTSP服务器IP地址和端口更新同样。

*--miface-addr选项不存在了。选择组播输出接口,使用--miface代替。

*Windows版本的将只对WindowsXPSP2或者以后版本进行支持。

Windows 2000 SP4,WindowsXP

*MACOS版本需要与Quartz Extreme兼容的机机器。

v1.1.13:

以1.1开头的最后一个版本

v1.1.0:

对用户重要的变化:

*在LinuxALSA库,在已知的错误可能会阻止音频输出。

更新1.0.24ALSA库或后,或使用替代技术输出。

v1.0.0:

重要的变化:

*ALSA和音频捕捉已经从V4L、V4L2删除访问。

看到“访问”的更多信息。

* 由于其技术上的局限性放弃对MACOS X10.4.x的支持。

v0.9.0:

*支持Windows 2000 and Mac OS X 10.4 (Tiger)

参考:https://baike.baidu.com/item/VLC%20Media%20Player/7393175?fr=ge_ala

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/665290
推荐阅读
相关标签
  

闽ICP备14008679号