開源好代碼 音視頻

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.pswp.cn/news/447188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447188.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MAC對于Excel表格換行操作

按住option之后&#xff0c;點擊Enter就可以完成換行操作

深入理解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…

HTTP狀態代碼及其定義

狀態行包含HTTP版本、狀態代碼、與狀態代碼對應的簡短說明信息。在大多數情況下&#xff0c;除了Content-Type之外的所有應答頭都是可選的。但Content-Type是必需的&#xff0c;它描述的是后面文檔的MIME類型。雖然大多數應答都包含一個文檔&#xff0c;但也有一些不包含&#…

安裝solc模塊4.25版本

使用國產阿里云的cnpm 如果不知道cnpm 參考鏈接 安裝solc模塊4.25版本 npm i solc0.4.25 --save -g查看安裝是否成功 可以配置軟連接使用solc&#xff0c;我的沒有配置 solcjs --version

conda關鍵命令

創建環境 創建名字為python3的虛擬環境&#xff0c;并且指定conda的python版本為3.6--name也可以縮寫為-namepython3.6 是指定python的版本號,如果不指定就默認為裝anaconda時python版本python3是創建的新的虛擬環境的名字&#xff0c;創建完&#xff0c;虛擬環境安裝在anacon…

GDB 調試程序 詳解 使用實例

用GDB調試程序 GDB概述 ———— GDB是GNU開源組織發布的一個強大的UNIX下的程序調試工具。或許&#xff0c;各位比較喜歡那種圖形界面方式的&#xff0c;像VC、BCB等IDE的調試&#xff0c;但如果你是在UNIX平臺下做軟件&#xff0c;你會發現GDB這個調試工具有比VC、BCB的圖形化…

在pycharm中使用conda虛擬環境(conda虛擬環境是已經創建好的),解決python安裝包文件很費勁的問題

查看conda的虛擬環境 使用PyCharm連接conda創建的虛擬環境&#xff0c;需要一個前提就是虛擬環境必須存在&#xff0c;使用conda env list命令查看虛擬環境列表打開PyCharm軟件 打開pycharm&#xff0c;選擇File->setting->Project:****->Project Interperter&#…

YUV測試序列下載地址

1、http://www.tkn.tu-berlin.de/research/vid/&#xff08;此網站已經移走&#xff0c;正在尋找。&#xff09; CIF&#xff1a; Akiyo、Bridge (far) 、Bridge (close) 、Bus 、Container 、Coastguard 、Flower 、Football 、Foreman 、Hall 、Highway 、Mobile & Calen…

flask 安裝flask_resultful

命令如下 conda install -c https://conda.anaconda.org/conda-forge flask-restful

完成一個H.265/HEVC碼流分析工具

經過大約一個月左右的業余時間&#xff0c;終于初步完成一個H.265/HEVC碼流分析工具。時間包括平時的周末、晚上&#xff0c;以及調休的集中時間。當然&#xff0c;中秋回家過節不寫代碼。截至今天&#xff0c;經過多種H.265序列測試&#xff0c;也有各種工具對比&#xff0c;基…

Linux中創建用戶并且配置sudo權限,百分百簡單有效

配置步驟如下&#xff1a; 登陸或切換到root用戶下&#xff1b;因為只有root用戶才具有權限進行用戶的添加&#xff0c;使用命令sudo su&#xff0c;切換為管理員用戶添加用戶 adduser -m youuser&#xff0c;并且在home路徑下創建同名的用戶文件夾passwd youuser&#xff0c;…

Java 計算兩個日期之間的相差天數

代碼如下 package com.data.dp;import org.apache.commons.lang3.StringUtils;import java.text.ParseException; import java.text.SimpleDateFormat;public class testDate {public static void main(String[] args) throws ParseException {SimpleDateFormat df new Simpl…

【HEVC】目前H265分析軟件推薦

2014-11-14liuwri本帖最后由 zxdaemon 于 2012-12-25 04:06 PM 編輯 1&#xff0c;Codecvisa&#xff1a; http://codecian.com/國產軟件&#xff0c;從最早的H264visa發展至今&#xff0c;感覺從剛開始的玩票&#xff0c;發展到今天專業級別的商業軟件&#xff0c;值得支持。軟…

將IPFS 配置服務器,電腦連接遠程服務器,環境配置

先前安裝配置的步驟省略&#xff0c;僅僅涉及后期的環境修改步驟 1&#xff0c;找到配置文件config&#xff0c;現需要使用命令ipfs init&#xff0c;從而生成.ipfs文件 ipfs init cd ~/.ipfs2&#xff0c;使用命令ls查看當前文件夾下面所包含的文件&#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&…

HEVC 編解碼資源

資料 overview 等 csvt系列詳見HHI主頁&#xff0c;適合&#xff1a;入門 Encoder Description 適合入門 Recommendation H.265 pdf 2016-12-22 標準文檔&#xff0c;適合&#xff1a;提高&#xff1b;解碼 High Efficiency Video Coding (HEVC): Algorithms and Architectures…

安裝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