国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

視頻編解碼之windows平臺下編譯ffmpeg的方法和使用教程

2019-11-08 01:40:38
字體:
來源:轉載
供稿:網友
1、編譯環境的搭建:       在windows平臺下編譯ffmpeg,通常的方法是采用Mingw+Msys的方法。不過在這里為了方便,也為了以后可以更方便地學習其他的一些知識,我決定安裝CodeBlocks這個IDE,其官網在:http://www.codeblocks.org/。在download->binary界面中可以找到該IDE對于各個平臺的不同版本,我們要找的是windows平臺下集成了Mingw的版本,也就是需要下載安裝codeblocks-16.01mingw-setup.exe這個版本。安裝完成之后,出現界面:接下來安裝MSys,地址是:http://www.mingw.org/wiki/msys

2、編譯FFMPEG的依賴庫

想要成功編譯出ffmpeg,需要提前安裝的依賴庫非常非常多,而且有些還非常復雜。現在我們開始一個個嘗試編譯安裝。

(1)安裝yasm。

從這個鏈接下載:http://yasm.tortall.net/Download.html;選擇其中的win32類別的,下載完成后文件名為:yasm-1.2.0-win32.exe。將這個文件重命名為yasm.exe并拷貝到C:/Windows/system32或者D:/Mingw/Bin中。

(2)編譯zlib。

zlib是用于數據壓縮的一個開源庫,地址是:http://www.zlib.net/。我們將源文件zlib-1.2.8.tar下載成功后拷貝到D:/MSYS1.0/home/Administrator中并解壓縮。隨后進入msys,依次輸入以下命令:

cd zlib-1.2.8

make -f win32/Makefile.gcc

編譯完成后,在zlib-1.2.8生成了zlib1.dll、libz.a文件。然后調用以下命令將相關文件復制到Mingw響應的目錄:

cp -iv zlib1.dll /mingw/bin  

cp -iv zconf.h zlib.h /mingw/include  

cp -iv libz.a /mingw/lib  

檢查相關目錄,相應的文件已經成功復制過去了。

(3)編譯libgsm。

下載地址是:http://libgsm.sourcearchive.com/。下載完成的文件為libgsm_1.0.13.orig.tar,將其拷貝到D:/MSYS1.0/home/Administrator并解壓。在msys中進入gms目錄后,輸入以下命令:

make(這一步會出現fchmod和fchown的編譯錯誤,無視之,因為我們只需要libgsm.a庫文件即可)

mkdir /mingw/include/gsm

cp inc/gsm.h /mingw/include/gsm

cp lib/libgsm.a /mingw/lib

同樣,檢查相關目錄,頭文件gsm.h和庫文件libgsm.a已經成功復制。

(4)編譯lame。

下載地址:http://sourceforge.net/PRojects/lame/files/lame/。將壓縮包在與上面幾個庫相同的位置解壓,msys進入后執行:

./configure --prefix=/mingw --enable-expopt=full

make

make install

檢查相關目錄,/mingw/include下新建了一個lame存放頭文件,而/mingw/lib中已經包含了libmp3lame.a、libmp3lame.dll.a、libmp3lame.la三個庫文件,說明編譯成功。

(5)編譯Libogg、Libvorbis、Libspeex和Libtheora

下載地址為http://xiph.org/downloads/。安裝方法同上面類似,即解壓,在msys中執行

./configure --prefix=/mingw

make

make install

(6)編譯faac

faac主要用于音頻的編解碼,下載地址http://www.audiocoding.com/downloads.html。將faac-1.28.tar解壓。隨后需要對文件進行一些小修改:

在目錄中新建一個文件名為faac-1.28.diff,內容如下:

[plain] view plain copy 在CODE上查看代碼片派生到我的代碼片diff -ur faac-1.28.orig/common/mp4v2/mpeg4ip_win32.h faac-1.28/common/mp4v2/mpeg4ip_win32.h  --- faac-1.28.orig/common/mp4v2/mpeg4ip_win32.h Sun Jan 25 10:14:34 2009  +++ faac-1.28/common/mp4v2/mpeg4ip_win32.h  Sat Jul 10 18:32:45 2010  @@ -42,10 +42,18 @@   #include <stdlib.h>   #include <time.h>   #include <limits.h>  +#include <ctype.h>      #ifndef inline   #define inline __inline   #endif  +#ifdef HAVE_STDINT_H  +#include <stdint.h>  +typedef uint64_t u_int64_t;  +typedef uint32_t u_int32_t;  +typedef uint16_t u_int16_t;  +typedef uint8_t u_int8_t;  +#else   typedef unsigned __int64 uint64_t;   typedef unsigned __int32 uint32_t;   typedef unsigned __int16 uint16_t;  @@ -58,10 +66,12 @@   typedef signed __int32 int32_t;   typedef signed __int16 int16_t;   typedef signed __int8  int8_t;  +#endif   typedef unsigned short in_port_t;   typedef int socklen_t;  -typedef int ssize_t;  +/*typedef int ssize_t;*/   typedef unsigned int uint;  +/*   static inline int snprintf(char *buffer, size_t count,                const char *format, ...) {     va_list ap;  @@ -75,11 +85,14 @@     }     return ret;   }  +*/   #define strncasecmp _strnicmp   #define strcasecmp _stricmp   #define localtime_r(a,b) localtime_s(b,a)  +/*   #define printf printf_s   #define fprintf fprintf_s  +*/      #include <io.h>   #include <fcntl.h>  @@ -124,8 +137,13 @@   #define U64F  "I64u"   #define X64F "I64x"     +#if defined(__WINDOWS__) && !defined(__MINGW32__)   #define TO_D64(a) (a##I64)   #define TO_U64(a) (a##UI64)  +#else  +#define TO_D64(a) (a##LL)  +#define TO_U64(a) (a##ULL)  +#endif      #define LOG_EMERG 0   #define LOG_ALERT 1  diff -ur faac-1.28.orig/frontend/Makefile.am faac-1.28/frontend/Makefile.am  --- faac-1.28.orig/frontend/Makefile.am Tue Dec 16 09:56:00 2008  +++ faac-1.28/frontend/Makefile.am  Sat Jul 10 18:00:49 2010  @@ -5,7 +5,7 @@      if WITH_MP4V2   INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/common/mp4v2  -LDADD = $(top_builddir)/libfaac/libfaac.la $(top_srcdir)/common/mp4v2/libmp4v2.a -lm -lstdc++  +LDADD = $(top_builddir)/libfaac/libfaac.la $(top_srcdir)/common/mp4v2/libmp4v2.a -lm -lstdc++ -lws2_32   else   INCLUDES = -I$(top_srcdir)/include    LDADD = $(top_builddir)/libfaac/libfaac.la -lm  然后執行:

patch -p1 < faac-1.28.dll

./bootstrap

./configure --prefix=/mingw

make

make install

這樣編譯可以成功。

(7)編譯xvidcore-1.3.2

下載地址:http://www.xvid.org/。解壓,進入/xvidcore/build/generic目錄,執行

./configure --prefix=/mingw

隨后,需要將該目錄下的幾個文件(config/config.status/configure/configure.in)中含有的“-mno-cygwin”字符刪掉,否則會出現編譯錯誤。

然后執行

make

make install

cp -iv /=build/xvidcore.dll.a /mingw/lib/libxvidcore.dll.a

檢查目標文件,libxvidcore.dll.a已經成功復制。

(8)安裝X264

下載地址http://www.videolan.org/developers/x264.html。與上面的庫類似,解壓,進入目錄,執行下列命令“

configure --prefix=/mingw --enable-w32thread --enable-shared --disable-opencl

make

make install

(9)安裝SDL

SDL是可以選裝的部分,如果不安裝SDL,我們依然可以生成ffmpeg.exe和ffprob.exe,但是不能生成ffplay.exe。

安裝SDL的過程比較簡單,從http://www.libsdl.org/download-1.2.php下載SDL-devel-1.2.15-mingw32.tar。解壓后,需要將makefile做一些小修改,將CROSS_PATH路徑改為CROSS_PATH := /mingw。在msys命令行中執行:

 make cross

結束后,在mingw的include目錄分別生成了SDL目錄存放頭文件,在lib目錄存放庫文件。3、編譯ffmpeg1、首先從Github上https://github.com/FFmpeg/FFmpeg下載ffmpeg源碼ffmpeg-2.8.2;2、與編譯依賴庫類似,進入代碼目錄,依次執行下列命令:

./configure --prefix=/mingw --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-postproc --enable-avfilter --enable-runtime-cpudetect --enable-memalign-hack --enable-bzlib --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --disable-debug --enable-pthreads

但是系統會提示pr: command not found。我們需要在http://code.google.com/p/mingw-lib/downloads/detail?name=coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2&can=2&q=下載 coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2這個文件,并將bin目錄下的pr.exe復制到/msys1.0/bin目錄下。系統提示找不到libxvid,所以暫時把"--enable-libxvid"去掉,重新configure,成功。

下面執行:

make

make install

執行成功,在/mingw/bin文件夾下我們成功看到了編譯出來的dll以及可執行程序!
上一篇:開燈問題

下一篇:hdoj2049 考新郎

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石屏县| 垣曲县| 兰州市| 新源县| 武隆县| 前郭尔| 济源市| 屯昌县| 沭阳县| 舞阳县| 合江县| 瑞丽市| 开封市| 宁波市| 汉阴县| 若羌县| 汶上县| 阿尔山市| 邵阳市| 肇源县| 平江县| 沅江市| 罗江县| 万宁市| 南川市| 称多县| 收藏| 玛纳斯县| 托克托县| 西贡区| 安岳县| 福贡县| 吴桥县| 安宁市| 周至县| 英德市| 磴口县| 阳高县| 呼和浩特市| 关岭| 深水埗区|