开源好代码 音视频

VirtualDub

 

一、简介

 

 

 

1VirtualDub主界面

VirtualDub是一款开源的音视频捕获、处理软件。VirtualDub也可称为一款多媒体编辑软件,因为它包含了多媒体输入、编辑、处理、输出等各个环节,但是作者并未将它定位为一款多媒体编辑软件(参见官网:http://www.virtualdub.org/),事实上VirtualDub在音视频编辑上的确没有Adobe Premiere等软件那么专业。VirtualDub的特点是,在音视频捕获和处理上的功能非常强大,而且处理速度非常快。

VirtualDub的亮点是音视频捕获和处理,但其在多媒体编辑整个流程上的功能模块是full的。下图2VirtualDub多媒体数据处理的一个流程。从图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

调整音频段的占用时长

 

 

五、相关源码

在视频处理方面,除了VirtualDubavisynth也包含了功能非常全面的视频处理滤镜。Avisynth官方网址:http://www.avisynth.org/。后期还会具体介绍Avisynth工程及其应用。



How to Compile mpc

一、测试环境
所用mpc版本:2006.12.5 exported from svn
OS: windows xp sp2
Visual studio 2005 professional (VC8)
二、安装所需的SDK
1、DirectX 9 SDK
测试时所用的版本为:DirectX SDK9.0c October 2006  +DirectX SDK Extras2005,2
DirectX SDK 9.0c October2006 下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyId=D625324C-59B4-4951-849E-640B508DC442&displaylang=en
DirectX SDK Extras2005,2 版 下载地址
http://download.microsoft.com/download/d/9/1/d91c44b9-fbac-4e8e-bee1-4a75777923ec/dxsdk_feb2005_extras.exe
NOTE:DirectX SDK Extras包含directshow sdk,具体内容可参考:
http://blog.csdn.net/sunshine1314/archive/2006/12/13/1440797.aspx
2、Windows Media Format SDK 9
下载地址:
http://download.microsoft.com/download/3/0/4/30451651-9e47-4313-89a3-5bb1db003c26/WMFormatSDK.exe
三、编译环境设置
1、DirectX 9BaseClasses编译生成
<DXSDK>\Samples\C++\DirectShow\BaseClasses
VS2005生成:
Debug_Unicode, Release_Unicode 两个版本。
为了正确编译,需修改以下文件:
(a) ctlutil.h
D:\DXSDK\Samples\C++\DirectShow\BaseClasses\ctlutil.h
修改如下:
  //operator=(LONG); //modified by peterlee
  COARefTime& operator=(LONG);
(b) wxdebug.cpp
d:\DXSDK\Samples\C++\DirectShow\BaseClasses\wxdebug.cpp
      //static g_dwLastRefresh = 0;
      static DWORD g_dwLastRefresh = 0; //lspmodify
(c) winutil.cpp
d:\DXSDK\Samples\C++\DirectShow\BaseClasses\winutil.cpp
  UINT Count; //lspmodify
  for (Count =0;Count < Result;Count++) { //lspmodify
(d) outputq.cpp
d:\DXSDK\Samples\C++\DirectShow\BaseClasses\outputq.cpp
long iDone; //lspmodify
for (iDone = 0; //lspmodify
 
2、vs2005环境设置
在vs2005下,选择菜单 Tools -> Options,左栏选择Projects andSolutions -> VC++ Directories
- include:
<DXSDK>\Include
<DXSDK>\Samples\C++\Common\Include
<DXSDK>\Samples\C++\DirectShow\BaseClasses
<WMSDK>\WMFSDK9\include
...
- lib:
<DXSDK>\lib
<DXSDK>\Samples\C++\Common\Src
<DXSDK>\Samples\C++\DirectShow\BaseClasses\Debug_Unicode
<DXSDK>\Samples\C++\DirectShow\BaseClasses\Release_Unicode
<WMSDK>\WMFSDK9\lib
...
2、头文件修改
(a) winnt.h
d:\Program Files\Microsoft Visual Studio8\VC\PlatformSDK\include\winnt.h
在该文件头部添加:
#define POINTER_64 __ptr64 // add by peterlee
(b) vmr9.h
D:\DXSDK\Include\vmr9.h
     MixerPref9_RenderTargetRGB     = 0x1000,
     MixerPref9_RenderTargetYUV     = 0x00002000, //lsp add
四、编译步骤
1. deccs
2. dsutil
3. ui
4. subpic
5. subtitles
6. filters (for mpc only build those configurations whichoutput a lib, the rest outputs stand-alone filters)
7. apps\mplayerc
需要修改的内容:
1、subtitles
guliverkli\src\subtitles\CCDecoder.cpp
'','!','"','#','$','%','&','\'','(',')','?','+',',','-','.','/',//lsp
将 '? 全局替换成 '?' 。
2、filters
(a) mp4Splitter project
将guliverkli\src\filters\parser\mp4splitter\AP4\Update\v0.6.3\Bento4_0.6.3-001.7z解压后,将source文件夹拷贝到guliverkli\src\filters\parser\mp4splitter\AP4\source
(b) FLVSplitter.h
guliverkli\src\filters\parser\FLVSplitter\FLVSplitter.h
//#include "VP62.h" // comment this out if you don't haveVP62.cpp/h
同时将VP62.cpp从工程中删除。
(b) Icons.h
d:\我的开发\mpcplus\guliverkli\include\qt\Icons.h
  kAppleExtrasFolderIcon     = FOUR_CHAR_CODE('aex?), //lspmodify
3、apps\mplayerc
(a) mplayerc project
Link input选项:
将RadGtSplitterRU.lib删除,
增加:
ResizableLibRU.lib
CmdUIRU.lib
decssRU.lib
TreePropSheetRU.lib
sizecbarRU.lib
(b)
将<DXSDK>\Samples\C++\DirectShow\BaseClasses\Release_Unicode下STRMBASE.lib拷贝一份为strmbaseRU.lib
最后,若一切顺利的话,将会在mplayerc工程目录下生成mplayerc.exe文件,运行该文件即可播放各类影音文件了(假设机器上已经安装过相应的解码filter了)。
后记:
综上观之,MPC的编译过程中对很多SDK源码文件进行了小改动,其中最大的症结在于笔者所安装的directshowsdk比较老(但是笔者没有找到比February 2005更加新的),对vs2005的支持不好,因为vs2005和vc6,vs2003相比,对c/c++代码的要求比较严格。


the original MPC project:
http://sourceforge.net/projects/guliverkli/
2006.5月后,mpc工程基本上就停止更新了。
注:mpc全称meida playerclassic,是一个万能播放器核心引擎,目前流行的万能播放器,如暴风影音,kmp,klc等,或多或少都采用mpc的核心。mpc是gabest创建和主力维护开发的,gabest同时是著名字幕插件vobsub的作者。

sourceforege上最新发现的mpc active工程
http://sourceforge.net/projects/guliverkli2/
该工程是基于最新的原mpc工程(应该是2006.5月版),主要是对mpc的程序问题进行修补,功能上的增加比较少。主要维护者:clsid2



一、简介

Mpc是一个非常流行的开源播放器,国外的K-LiteCodec,国内的幻想影音、终极解码、完美解码等播放工具都捆绑了mpc播放器程序。另外,暴风、kmplayer等播放器程序也都或多或少地参考及使用了mpc中的功能和代码。Mpc开源工程开始于2003年,是一款较早的开源万能播放器程序,基于directshow架构,只要有可用的解码filtermpc可以支持任意的媒体格式。Mpc的作者gabest,同时也是著名的外挂字幕插件vobsub的作者。

遗憾的是Mpc工程在200604月停止了更新,同时所幸的是有两个开源工程在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,realsplitter。利用mpc的工程有很多功能完善的filter基类,对于构建自主的splitter,decoderfilter非常方便。

 

三、更多资料

如果要在非windows平台上构建多格式支持的媒体播放程序,可以使用另外两个开源工程,vlcmplayer。具体内容见本站的相应文章。

一、简介

MediaInfo 用来分析视频和音频文件的编码和内容信息。

MediaInfo可以获得多媒体文件的哪些信息?

内容信息:标题,作者,专辑名,音轨号,日期,总时间……

视频:编码器,长宽比,帧频率,比特率……  

音频:编码器,采样率,声道数,语言,比特率……  

文本:语言和字幕  

段落:段落数,列表  

 

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...  

 

MediaInfo有哪些主要功能和特点?

支持众多视频和音频文件格式 

多种查看方式:文本,表格,树形图,网页……  

自定义查看方式  

信息导出:文本,CSVHTML……  

三种发布版本:图形界面,命令行,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编译指南

支持WindowsLinux平台

推荐使用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除了有GUICMD两种使用方法,还可以在程序中使用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模块和其它功能可以独立,使用上非常便捷,是一个值得推荐的开源工程。

 

三、相关源码

关于媒体信息解析,ffmpeglibformat是用于媒体文件解析的,是parser的功能,支持格式也非常全,和MediaInfo有想通之处,在使用MediaInfo时遇到问题可以借鉴libformat的源码。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Solidity 二

Solidity数据位置 所有复杂的数据类型&#xff0c;即数组、结构和映射类型&#xff0c;都会有一个额外属性“数据位置”&#xff0c;用来指定数据的存储位置&#xff0c;即数据是存储在memory还是存储在storage里面根据上下文环境&#xff0c;IDE会自动指定数据的默认存储位置…

VOIP简介

一、什么是VOIP VOIP全称为&#xff08;VoiceOver Internet Protocol&#xff09;&#xff0c;是一种利用Internet网络进行语音通信的技术&#xff0c;更通俗一点说&#xff0c;就是IP电话。就是以IP分组交换网为传输平台&#xff0c;对模拟的语音信号进行编码压缩&#xff0c…

深入理解Solidity 三

Solidity函数声明和类型 函数的值类型有两类&#xff1a;内部&#xff08;internal&#xff09;类型和外部&#xff08;external&#xff09;类型内部函数只可以在当前合约内部被调用&#xff08;即在当前代码块内&#xff0c;包括内部库函数和继承函数&#xff09;&#xff0c…

安装solc模块4.25版本

使用国产阿里云的cnpm 如果不知道cnpm 参考链接 安装solc模块4.25版本 npm i solc0.4.25 --save -g查看安装是否成功 可以配置软连接使用solc&#xff0c;我的没有配置 solcjs --version

在pycharm中使用conda虚拟环境(conda虚拟环境是已经创建好的),解决python安装包文件很费劲的问题

查看conda的虚拟环境 使用PyCharm连接conda创建的虚拟环境&#xff0c;需要一个前提就是虚拟环境必须存在&#xff0c;使用conda env list命令查看虚拟环境列表打开PyCharm软件 打开pycharm&#xff0c;选择File->setting->Project:****->Project Interperter&#…

完成一个H.265/HEVC码流分析工具

经过大约一个月左右的业余时间&#xff0c;终于初步完成一个H.265/HEVC码流分析工具。时间包括平时的周末、晚上&#xff0c;以及调休的集中时间。当然&#xff0c;中秋回家过节不写代码。截至今天&#xff0c;经过多种H.265序列测试&#xff0c;也有各种工具对比&#xff0c;基…

Golomb及指数哥伦布编码原理介绍及实现

文章来源&#xff1a; https://www.cnblogs.com/wangguchangqing/p/6297792.html &#xff0c; 写的不错&#xff0c;转发出来。 2017年的第一篇博文。 本文主要有以下三部分内容&#xff1a; 介绍了Golomb编码&#xff0c;及其两个变种&#xff1a;Golomb-Rice和Exp-Golo…

解决ipfs 出现Error: can‘t publish while offline: pass `--allow-offline` to override的问题

原因 出现这个问题的原因是因为&#xff0c;ipfs未与公网上的节点相互连接&#xff0c;因此此时处于离线状态 使用场景 部署自己的博客&#xff0c;后期的改动&#xff0c;累计追加在同一个地址&#xff0c;这个地址是唯一的&#xff0c;也就是创建ipfs生成的ID号 步骤 1&…

安装ipfs-http-client出现constants@0.1.2 install: node build.js > index.browser.js错误的解决办法

错误截图 原先的命令 npm install --save-dev ipfs-http-client 修改后的命令 npm install --save-dev ipfs-http-client --unsafe-permtrue --allow-root

安装ipfs-api的命令变了,最新版的命令如下

原先使用的命令安装ipfs-api npm install --save-dev ipfs-api 现在使用的命令安装ipfs-api npm install --save-dev ipfs-http-client 官方文档 参考教程 官方文档

区块链相关问题 理解

本博客针对区块链的部分问题进行详解&#xff0c;希望帮助大家对于区块链有一个更好的理解 1&#xff0c;如果散布虚假交易&#xff0c;怎么整&#xff1f;&#xff08;谁欠我XXX比特币&#xff09; 1&#xff0c;可以发起虚假交易&#xff0c;但是很难被全网的节点接收并写入…

区块链的相关知识点

1&#xff0c;密码学原理 密码学原理 1&#xff0c;collision resistance 哈希函数 &#xff0c;目前还是很安全的&#xff0c;没有找到任何不同的内容其哈希是一致的情形。哈希碰撞&#xff08;这个在数学上面是没法证明的&#xff0c;都是日常的实践表明&#xff0c;无法找…

使用MAC 编译合约的时候报错:

编译报错的显示内容如下&#xff1a; Error: EACCES: permission denied, mkdir /Users/chy/Documents/ipfslearn/ipfs_eth_img/client/src/contracts 最简单的解决方法 原因分析&#xff1a;执行的权限不够 解决办法&#xff1a;升级权限 使用命令 chmod 777 项目的文件夹使…

最新,使用truffle框架之后,安装ipfs的api包文件的命令变化

原因 项目文件路径变化了&#xff0c;不是先前直接在项目文件夹里面直接执行安装ipfs的命令了&#xff0c;需要切换到client文件夹下面执行 路径不对&#xff0c;会出现错误&#xff0c;错误提示如下 切换到正确的路径之后&#xff0c;使用命令 npm install --save ipfs-http-…

通过node 完成简单的web3 API调用测试

使用命令查看当前web3的版本 npm list web3输入命令 node&#xff0c;进入终端 引入web3&#xff0c;使用命令 var web3 require(web3) 查看引入web3的版本 web3.version

LInux学习笔记(四)-----实操排雷

参考书籍&#xff1a;linux就该这么学 4 Vim 编辑器与 Shell 命令脚本 4.1 Vim 文本编辑器(在 Vim 中&#xff0c;无法直接从输入模式切换到末行模式) 4.1.1 配置 Yum 软件仓库 注&#xff1a;书中好像有点问题&#xff0c;第一个 . 改成 /&#xff08;我是Ubuntu发现原来不能用…

Web3.js 学习

web3.js Web3 JavaScript app APIweb3.js是一个JavaScript API库&#xff0c;一般使得DApp在以太坊上运行web3.js通过RPC调用与本节点通信&#xff0c;用于任何暴露了RPC层的以太坊节点之间通信web3包含了eth对象&#xff0c;即web3.eth&#xff08;专门和以太坊区块链交互&am…

c语言指针入门

指针的用途非常广泛&#xff0c;比如如果你想通过函数改变一个变量的值&#xff0c;就得用指针而不能用值传递。还有在很多时候变量&#xff0c;特别是对象的数据量实在太大&#xff0c;程序员就会用指针来做形参&#xff0c;只需要传递一个地址就行&#xff0c;大大提高了效率…

搭建基于飞桨的OCR工具库,总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别的PaddleOCR

介绍 基于飞桨的OCR工具库&#xff0c;包含总模型仅8.6M的超轻量级中文OCR&#xff0c;单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。 相关链接 PaddleOCR项目地址飞桨开源深度学习平台效果展示页面中文OCR在线体验地…

macos 10.15 django2.2+apache2.4+ladon+wsgi写webseverice接口

他的文档不够完善&#xff0c;使用起来可能有坑&#xff0c;因为不知道如何将ladondjangoapache绑定在一起使用&#xff0c;所以放弃了。 提醒&#xff1a;最好用个虚拟环境&#xff0c;防止库冲突我使用的是anaconda 安装apache macos本身自带apache&#xff0c;其他平台百度…