VirtualDub
一、简介
图1VirtualDub主界面
VirtualDub是一款开源的音视频捕获、处理软件。VirtualDub也可称为一款多媒体编辑软件,因为它包含了多媒体输入、编辑、处理、输出等各个环节,但是作者并未将它定位为一款多媒体编辑软件(参见官网:http://www.virtualdub.org/),事实上VirtualDub在音视频编辑上的确没有Adobe Premiere等软件那么专业。VirtualDub的特点是,在音视频捕获和处理上的功能非常强大,而且处理速度非常快。
VirtualDub的亮点是音视频捕获和处理,但其在多媒体编辑整个流程上的功能模块是full的。下图2是VirtualDub多媒体数据处理的一个流程。从图2可以看出,视频自上而下的处理流程包括:视频回放或者捕获,统计层,音视频重同步,捕获参数的调节,视频处理,视频显示,视频压缩,流选择,写入磁盘等。音频的处理流程也类似。
图2VirtualDub处理流程
二、源码获取途径
VirtualDub官网:
http://www.virtualdub.org
下载地址:
http://virtualdub.sourceforge.net/
技术论坛:
http://forums.virtualdub.org/
三、使用指南
1.VirtualDub编译指南
支持Windows平台
编译工具ms visual studio 2005 + yasm.exe
从sourcforge下载的VirtualDub可以在vs2005上顺畅编译。
四、典型应用
直接改造VirtualDub源码工程的应用比较窄,而VirtualDub中高效率的音视频处理和捕获模块可以有很广泛的应用,下面就介绍VirtualDub音视频处理和转换具备的功能。
1. 视频处理
VirtualDub中的视频处理包括以下功能:
视频处理模块 | 描述 |
resize | 调整大小 |
blur | 模糊 |
Brightness/contrast | 调整亮度和对比度 |
deinterlace | 去隔行效应 |
emboss | 浮雕 |
flip | 翻转 |
Convolution | 变换 |
grayscale | 求取灰度 |
HSV adjust | 调整色调、饱和度、亮度 |
Invert | 反色 |
logo | 添加logo图像 |
rotate | 任意角度旋转 |
sharpen | 锐化 |
Smoother | 平滑 |
threshold | 根据阈值转换成黑白图 |
warp | 扭曲 |
2. 视频色彩空间转换
VirtualDub支持以下色彩空间之间的互转:
RGB555,RGB565, RGB24, RGB32,
UYVY(4:2:2), YUY2(4:2:2), YV12(4:2:0), YV16(4:2:2),YVU9(4:1:0), Y8(灰度)
3. 音频处理
VirtualDub中的音频处理包括以下功能:
音频处理模块 | 描述 |
Stereo split | 分离一个声道的数据 |
Gain | 调整音强 |
Highpass | 高通滤波 |
lowpass | 低通滤波 |
mix | 混音多路音频 |
resample | 调整采样率 |
timstretch | 调整音频段的占用时长 |
五、相关源码
在视频处理方面,除了VirtualDub,avisynth也包含了功能非常全面的视频处理滤镜。Avisynth官方网址:http://www.avisynth.org/。后期还会具体介绍Avisynth工程及其应用。
How to Compile mpc
http://download.microsoft.com/download/d/9/1/d91c44b9-fbac-4e8e-bee1-4a75777923ec/dxsdk_feb2005_extras.exe
the original MPC project:
http://sourceforge.net/projects/guliverkli/
2006.5月后,mpc工程基本上就停止更新了。
注:mpc全称meida playerclassic,是一个万能播放器核心引擎,目前流行的万能播放器,如暴风影音,kmp,klc等,或多或少都采用mpc的核心。mpc是gabest创建和主力维护开发的,gabest同时是著名字幕插件vobsub的作者。
http://sourceforge.net/projects/guliverkli2/
该工程是基于最新的原mpc工程(应该是2006.5月版),主要是对mpc的程序问题进行修补,功能上的增加比较少。主要维护者:clsid2
一、简介
Mpc是一个非常流行的开源播放器,国外的K-LiteCodec,国内的幻想影音、终极解码、完美解码等播放工具都捆绑了mpc播放器程序。另外,暴风、kmplayer等播放器程序也都或多或少地参考及使用了mpc中的功能和代码。Mpc开源工程开始于2003年,是一款较早的开源万能播放器程序,基于directshow架构,只要有可用的解码filter,mpc可以支持任意的媒体格式。Mpc的作者gabest,同时也是著名的外挂字幕插件vobsub的作者。
遗憾的是Mpc工程在2006年04月停止了更新,同时所幸的是有两个开源工程在mpc的基础上继续更新,一个是mpc2,主要是clsid2在维护,主要是修正mpc原工程中的一些bug,不添加新功能;另一个mpc-homecinema比较强了,在mpc的基础上,添加了Antitearing,抖动测试,字幕同步,ShuttlePN31远程控制支持,OSD屏幕显示,vistaReady等不少实用的功能。
Mpc主界面截图
二、源码获取途径
1. mpc原工程gabest
http://sourceforge.net/projects/guliverkli2/
https://guliverkli.svn.sourceforge.net/svnroot/guliverkli
gabest 2006.04停止更新
2.mpc2(clsid2)
http://sourceforge.net/projects/guliverkli2/
https://guliverkli2.svn.sourceforge.net/svnroot/guliverkli2
3.mpc-hc
mpc-home cinema Registered : 2006-06-21 12:10
http://tibrium.neuf.fr/
http://sourceforge.net/project/showfiles.php?group_id=170561
https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk
三、使用指南
OS: windows平台
编译平台:vs2003, vs2005 orvs2008
另外需要安装directX9.0sdk 及windows media formatsdk9
关于mpc的具体编译方法参见《How to Compilempc》:
http://blog.csdn.net/sunshine1314/archive/2006/12/13/1442103.aspx
二、典型应用
Mpc最常见的应用是:在windows平台上构建多格式支持的媒体播放程序。另外,用mpc构建针对自定义格式的播放程序也是很方面的。
另外,mpc工程中除了包含播放器主程序,还包含了不少开源的filter,特别是splitterfilter,如mp3, mpeg, mp4, mov, flv,real等splitter。利用mpc的工程有很多功能完善的filter基类,对于构建自主的splitter,decoder等filter非常方便。
三、更多资料
如果要在非windows平台上构建多格式支持的媒体播放程序,可以使用另外两个开源工程,vlc和mplayer。具体内容见本站的相应文章。
一、简介
MediaInfo 用来分析视频和音频文件的编码和内容信息。
内容信息:标题,作者,专辑名,音轨号,日期,总时间……
视频:编码器,长宽比,帧频率,比特率……
音频:编码器,采样率,声道数,语言,比特率……
文本:语言和字幕
段落:段落数,列表
视频:MKV, OGM, AVI,DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2, MPEG-4, DVD (VOB)...(编码器:DivX, XviD,MSMPEG4, ASP, H.264, AVC...)
音频:OGG, MP3, WAV,RA, AC3, DTS, AAC, M4A, AU, AIFF...
字幕:SRT, SSA, ASS,SAMI...
支持众多视频和音频文件格式
多种查看方式:文本,表格,树形图,网页……
自定义查看方式
信息导出:文本,CSV,HTML……
三种发布版本:图形界面,命令行,DLL(动态链接库)
与Windows资源管理器整合:拖放,右键菜单
国际化:有多种界面语言供选择
MediaInfo主界面截图
二、源码获取途径
MediaInfo英文主页:
http://mediainfo.sourceforge.net/
MediaInfo中文主页:
http://mediainfo.sourceforge.net/zh-CN
MediaInfo开发者主页:
http://sourceforge.net/projects/mediainfo
源码svn下载地址:
https://mediainfo.svn.sourceforge.net/svnroot/mediainfo
三、使用指南
1. MediaInfo编译指南
支持Windows和Linux平台
推荐使用ms visual studio2005。
- MSVC : Microsoft Visual C++ 9 (aka 2005) (for Visual Studio 7(aka 2002) or 8 (aka 2003), you can edit .sln and .xxproj to becompatible. - .sln : "...Format Version 9.00" to 7.00 - .xxproj :"Version="8.00" or "Version="7.10" to 7.00 This is not alwaystested, but you should easily be able to adapt them for yourcompiler)
- BCB : Borland C++ Builder 6
- DevCpp : Dev-C++ (Dev-Cpp is an IDE for MinGW) (I am working onthis release, not stable)
- MinGW : MinGW on Windows (I am working on this release, notstable)
- GCC : Linux GCC (I am working on this release, notstable)
2.MediaInfo SDK
MediaInfo除了有GUI和CMD两种使用方法,还可以在程序中使用MediaInfo库。
MediaInfo库有静态链接和动态链接两种方式,MediaInfoSDK的相关官方资料如下:
- Read this first (supported languages, versioning,conventions)
- Different ways of using the library
- How to begin quickly with MediaInfo
- More information about the programminginterface
- The Doxygen documentation (full C++ APIinterface)
二、典型应用
MediaInfo的典型应用是使用其DLL库,用来提取媒体文件的信息。其特点是,支持的格式全、提取的信息丰富。当然,MediaInfo本身是开源的,其DLL库可以进行二次开发,可以扩充自定义格式,增加自定义功能。对于工程使用,MediaInfo模块和其它功能可以独立,使用上非常便捷,是一个值得推荐的开源工程。
三、相关源码
关于媒体信息解析,ffmpeg的libformat是用于媒体文件解析的,是parser的功能,支持格式也非常全,和MediaInfo有想通之处,在使用MediaInfo时遇到问题可以借鉴libformat的源码。