日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

MinGw+Msys搭建环境 编译ffmpeg

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MinGw+Msys搭建环境 编译ffmpeg 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MinGW:一個(gè)可自由使用和自由發(fā)布的Windows特定頭文件和使用GNC工具集導(dǎo)入庫(kù)的集合,允許你生成本地的Windows程序而不需要第三方C運(yùn)行時(shí)

?

MinGW,即 Minimalist GNU For Windows。它是一些頭文件和端口庫(kù)的集合,該集合允許人們?cè)跊]有第三方動(dòng)態(tài)鏈接庫(kù)的情況下使用 GCC產(chǎn)生 Windows32 程序。

?

開發(fā) MinGW 是為了那些不喜歡工作在 Linux(FreeBSD) 操作系統(tǒng)而留在 Windows 的人提供一套符合 GNU 的 GNU 工作環(huán)境。

所以,使用 MinGW 我們就可以像在 Linux 下一樣使用 GNU 程序開發(fā)工具。?

Minimal GNU(POSIX)system on Windows,是一個(gè)小型的GNU環(huán)境,包括基本的bash,make等等。是Windows下最優(yōu)秀的GNU環(huán)境。

---------------------------------------搭建-------------------------------------------------

感謝軟件業(yè)的告訴發(fā)展,可以讓菜鳥們更容易地學(xué)習(xí)和搭建運(yùn)行環(huán)境。

本來搭建MinGW+MSys環(huán)境是一件麻煩事,可是新版本的MinGw直接安裝就可以使用。下面是WinGW的網(wǎng)頁(yè)http://www.mingw.org/wiki/InstallationHOWTOforMinGW.在里面下載最新版本的MinGW可以直接搭建MinGW+MSys環(huán)境。

以下的小修改,為了實(shí)現(xiàn)ffmpeg的編譯。

3)修改“msys.bat”
  用文本編輯器打開X:\msys\msys.bat,由于打算用MSVC++編譯程序,所以需要有.lib文件才能鏈接到FFmpeg的庫(kù),這些.lib文件可以使用微軟的工具鏈中l(wèi)ib命令產(chǎn)生。為此,機(jī)器上必須已經(jīng)安裝了微軟的Visual Studio或是Visual C++。把下面一行加到msys.bat的最前面,把路徑替換成機(jī)器上vcvars32.bat實(shí)際存在的路徑,比如我的在“D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin”,于是就添加:
  call "D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vcvars32.bat"

?

4)系統(tǒng)整合
  復(fù)制X:\msys\etc\fstab.sample為X:\msys\etc\fstab,用文本編輯器打開X:\msys\etc\fstab編輯。(需要使用一個(gè)支持Unix換行風(fēng)格的編輯器,比如Notepad++),把下面這行:
  X:/mingw /mingw
  改為:
  X:/msys/mingw /mingw

好了,環(huán)境搭建完畢。進(jìn)入編譯ffmpeg階段。

--------------------------------------編譯--------------------------------------------------

3.????? 編譯,獲取FFMPEG庫(kù)(頭文件,lib,和DLL)

首先通過MSys安裝目錄下的msys.bat啟動(dòng)MSys,這時(shí)會(huì)出現(xiàn)一個(gè)命令行窗口,它是一個(gè)運(yùn)行著bash的rxvt程序,如下圖:

圖2

這是一個(gè)類似Linux的shell并且在Windows上運(yùn)行,就像是在使用一個(gè)真正的Linux shell。不過使用這個(gè)shell時(shí)需要注意:
  →目錄名使用正斜杠來分割,而不是Windows所使用的反斜杠(比如說要寫成"D:/ffmpeg"而不是"D:\ffmpeg")。
  →盤符(例如"C:\")可以從根目錄處訪問(像這樣"/C/")。
  →文件名或目錄名中如果帶有空格,必須用雙引號(hào)括起(例如這樣"/C/Program Files",帶有雙引號(hào))。
  下面切換到存放FFmpeg源代碼的目錄(假如你的代碼解壓之后的路徑是D:\ffmpeg),方法是輸入:"cd /D/ffmpeg"。
  接下來要配置FFmpeg,選擇編譯時(shí)包含的庫(kù),這里先輸入:
  ./configure --enable-shared --disable-static --enable-memalign-hack
  --enable-memalign-hack選項(xiàng)是FFmpeg在Windows上編譯成功所必須指定的,待配置完成后,將回到命令提示符,看到下圖所示的畫面:

圖3

如果沒有錯(cuò)誤的話,就可以"make"具有基本功能的FFmpeg了,在提示符后輸入:make。
  編譯的過程將持續(xù)很長(zhǎng)時(shí)間。如果一切正常,結(jié)束后將返回提示符,并有如下的最后編譯結(jié)束的輸出畫面:

最后獲取編譯生成的ffmpeg庫(kù)(頭文件,lib,dll)?

在提示符后輸入:make install。?

執(zhí)行完后會(huì)生成幾個(gè)文件下在MSys目錄的local文件夾下。目錄如:?

4.????? 在VC下配置(這個(gè)指如何在VC中調(diào)用ffmpeg庫(kù)),測(cè)試

VC環(huán)境配置:(假如目錄為上圖所示)

方法當(dāng)然就像其他額外庫(kù)一個(gè),一種是設(shè)置VC全局的Include路徑為你E:\msys\local\include,設(shè)置VC全局lib路徑為E:\msys\local\bin,增加操作系統(tǒng)的一個(gè)Path

E:\msys\local\bin。另一種就是設(shè)置某個(gè)工程的lib和Include的路徑。增加一個(gè)指向上面對(duì)應(yīng)的地址。這個(gè)我就不是說的詳細(xì),想必玩VC的都知道。

?

首先 建一個(gè)VC的控制臺(tái)工程,然后把E:\ffmpeg\libavcodec\api-example.c(ffmpeg的存放目錄)拷貝到你建的那個(gè)工程。然后改名api-example.cpp。編譯。你會(huì)發(fā)現(xiàn)卻頭文件。這個(gè)時(shí)候你需要將E:\msys\mingw\include(mingw安裝目錄下的include)的inttypes.h,stdint.h,_mingw.h三個(gè)文件拷到E:\msys\local\include(你ffmpeg庫(kù)的目錄下的include)。編譯還是有很多錯(cuò)。

1.?????? 需要在inttypes.h中 #define __restrict__ __restrict

2.?????? 如果是long long 錯(cuò)誤就改成__int64

3.?????? c->time_base.den= (AVRational){1,25}; 改成??? c->time_base.num = 1; c->time_base.den = 25;//

4.?????? 最上面的頭文件定義如下:

#include <math.h> // 注意這個(gè)別忘了,不然會(huì)出現(xiàn)math模板的一個(gè)錯(cuò)誤

#include <stdlib.h>

#include <stdio.h>

#include <string.h>?????

?

extern "C"

{

????? #ifdef HAVE_AV_CONFIG_H

????? #undef HAVE_AV_CONFIG_H

????? #endif

????????????

????? #include <libavcodec\avcodec.h>

????? #include <libavutil\mathematics.h>

?

????? #pragma comment(lib, "avcodec.lib")

????? #pragma comment(lib, "avutil.lib")

}

?

最后編譯應(yīng)該是不沒有錯(cuò)誤了。里面由于有些測(cè)試的視頻文件沒有,所以代碼執(zhí)行起來也看不出什么效果。用上面的一個(gè)代碼,就是僅僅為了測(cè)試,然后告訴我們使用我們已經(jīng)編譯好的ffmpeg庫(kù)還需要做那么的操作。

?

(以上大部分轉(zhuǎn)載于該空間http://apps.hi.baidu.com/share/detail/20685063,感謝他的無私奉獻(xiàn))

在Windows下編譯FFmpeg詳細(xì)說明
2010年3月11日 由 CodeCoolie 留言 ?
【前言】

本文參考網(wǎng)上大量資料,經(jīng)整理而成,并經(jīng)實(shí)踐驗(yàn)證,最后更新日期2010年3月11日。另外本人使用開發(fā)工具為Delphi,不會(huì)VC,所以沒有編譯VC相關(guān)的lib庫(kù)部分。

本文搭建MinGW+MSYS環(huán)境路徑分別假設(shè)為C:\MinGW和C:\MSYS,并且為純手工安裝,即下載相應(yīng)的壓縮包,直接解壓到相應(yīng)目錄。

本文鏈接——http://www.codecoolie.com/ffmpeg/compile-ffmpeg-under-windows/

本文作者——CodeCoolie


【簡(jiǎn)介】
■FFmpeg

http://www.ffmpeg.org

FFmpeg是一套用于錄制、轉(zhuǎn)換和流化音頻、視頻的完整解決方案,其中包含一組叫做libavcodec的領(lǐng)先的音頻、視頻編碼解碼庫(kù)。FFmpeg雖然是在Linux平臺(tái)下開發(fā)的,但可以在包括Windows在內(nèi)的大多數(shù)操作系統(tǒng)下進(jìn)行編譯。


■MinGW

http://www.mingw.org

在Windows下編譯FFmpeg所需編譯環(huán)境是MinGW,是Minimalist GNU for Windows的縮寫。MinGW包含Windows平臺(tái)頭文件、GCC、以及一些GNU工具。


■MSYS

http://www.mingw.org/wiki/msys

MSYS是MinGW的Shell環(huán)境,是Minimal SYStem的縮寫。MSYS提供了一些開發(fā)工具,如make等。


【編譯環(huán)境】
■MinGW

http://sourceforge.net/projects/mingw/files/

下載如下壓縮包:

GNU Binutils:binutils-2.20.1-2-mingw32-bin.tar.gz
MinGW Runtime:mingwrt-3.18-mingw32-dev.tar.gz
MinGW API for MS-Windows:w32api-3.14-mingw32-dev.tar.gz
GCC Version 4:gcc-core-4.2.1-sjlj-2.tar.gz(GCC 4.4有bug,將x264、xvid等與ffmpeg一起編譯時(shí)候GCC會(huì)崩潰)

將上述壓縮包按順序解壓到同一個(gè)目錄下即可,例如解壓到C:\MinGW

復(fù)制或重命名如下文件,其實(shí)就是去掉sjlj后綴:

從C:\MinGW\bin\gcc-sjlj.exe到gcc.exe

NOTICE:libiberty.a使用GNU Binutils包里較新的,而不是GCC Core包里的


■MSYS

http://sourceforge.net/projects/mingw/files/

下載如下壓縮包:

msysCORE-1.0.11-bin.tar.gz
msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma
make-3.81-2-msys-1.0.11-bin.tar.lzma
coreutils-5.97-2-msys-1.0.11-ext.tar.lzma(只需要pr.exe,configure ffmpeg時(shí)候用到)
vim-7.2-1-msys-1.0.11-bin.tar.lzma(不打算使用vi可以不裝)

將上述壓縮包按順序解壓到同一個(gè)目錄下即可,例如解壓到C:\MSYS


■MinGW+MSYS

編輯C:\MSYS\etc\fstab文本,指定MinGW在MSYS下的掛接目錄

C:/MinGW /mingw


■yasm

編譯x264時(shí)候需要

http://www.tortall.net/projects/yasm/

下載:http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz

解壓,編譯安裝:

./configure –prefix=/mingw
make
make install


【基本庫(kù)】
■zlib

http://sourceforge.net/projects/mingw/files/

下載如下壓縮包:

MinGW zlib:libz-1.2.3-1-mingw32-dev.tar.gz

將其解壓到C:\MinGW

刪除C:\MinGW\lib\libz.dll.a(否則會(huì)使用動(dòng)態(tài)鏈接,需要libz.dll)


■bzip2

http://sourceforge.net/projects/mingw/files/

下載如下壓縮包:

MinGW bzip2:bzip2-1.0.5-2-mingw32-dev.tar.gz

將其解壓到C:\MinGW

刪除C:\MinGW\lib\libbz2.dll.a(否則會(huì)使用動(dòng)態(tài)鏈接,需要libbz-2.dll)


■SDL

http://www.libsdl.org/

編譯ffplay時(shí)候需要

下載:http://www.libsdl.org/release/SDL-devel-1.2.13-mingw32.tar.gz

解壓,修改Makefile:CROSS_PATH := /mingw

編譯安裝:make cross


【FFmpeg基本編譯】

源碼取得:svn://svn.mplayerhq.hu/ffmpeg/trunk

配置編譯:假設(shè)安裝路徑為/FFmpeg/Release

./configure –prefix=/FFmpeg/Release –enable-memalign-hack
make
make install


【編解碼庫(kù)】

假設(shè)第三方庫(kù)安裝路徑為/olibs


■libgsm

GSM support via libgsm

GSM 06.10 lossy speech compression

http://user.cs.tu-berlin.de/~jutta/toast.html

下載gsm-1.0.12.tar.gz

解壓,修改Makefile中的CC = gcc -ansi -pedantic為CC = gcc

編譯安裝:

make

編譯到后來會(huì)出錯(cuò),但庫(kù)已經(jīng)編譯完成,用如下命令拷貝即可

cp lib/libgsm.a /olibs/lib/
cp inc/gsm.h /olibs/include/gsm/

ffmpeg編譯參數(shù):–enable-libgsm


■libmp3lame

MP3 encoding via libmp3lame

http://sourceforge.net/projects/lame/files/

下載lame-3.98.3.tar.gz

解壓,修改lame-3.98-3/libmp3lame/i386/Makefile.in中下面這行

$(ECHO) “non_pic_object=’$*.o’” >>$@

$(ECHO) “non_pic_object=’ .libs/$*.o’” >>$@

編譯安裝:

./configure –prefix=/olibs –disable-shared –enable-static –disable-frontend
make
make install

ffmpeg編譯參數(shù):–enable-libmp3lame


■opencore-amr

AMR-NB de/encoding、AMR-WB decoding via libopencore-amrnb

http://sourceforge.net/projects/opencore-amr/

下載opencore-amr-0.1.1.tar.gz(0.1.2編譯需要g++、libstdc++.dll.a)

解壓,注釋掉以下Makefile中的幾行

./opencore-amr/amrnb/Makefile
install: libopencore-amrnb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrnb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrnb.so
endif

./opencore-amr/amrwb/Makefile
install: libopencore-amrwb.a $(SHLIB)
install -d $(DESTDIR)$(PREFIX)/lib
install -m 644 libopencore-amrwb.a $(DESTDIR)$(PREFIX)/lib
# install $(SHLIB) $(DESTDIR)$(PREFIX)/lib
ifneq ($(shell uname), Darwin)
# ln -sf $(SHLIB) $(DESTDIR)$(PREFIX)/lib/$(SONAME)
# ln -sf $(SONAME) $(DESTDIR)$(PREFIX)/lib/libopencore-amrwb.so
endif

編譯安裝:

make CC=gcc
make install PREFIX=/olibs

ffmpeg編譯參數(shù):–enable-version3 –enable-libopencore-amrnb –enable-libopencore-amrwb


■libogg

供libvorbis和libtheora用

http://www.xiph.org/downloads/

下載libogg-1.1.4.tar.gz

解壓,編譯安裝:

./configure –prefix=/olibs –disable-shared
make
make install


■libvorbis

Vorbis encoding via libvorbis

http://www.xiph.org/downloads/

下載libvorbis-1.2.3.tar.gz

解壓,編譯安裝:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg編譯參數(shù):–enable-libvorbis


■libtheora

Theora encoding via libtheora

http://www.xiph.org/downloads/

下載libtheora-1.1.1.zip

解壓,編譯安裝:

./configure –prefix=/olibs –disable-shared –with-ogg=/olibs
make
make install

ffmpeg編譯參數(shù):–enable-libtheora


■libx264

H.264 encoding via x264

http://www.videolan.org/developers/x264.html

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

下載最新的源碼包

解壓,編譯安裝:

./configure –prefix=/olibs
make
make install

ffmpeg編譯參數(shù):–enable-gpl –enable-libx264


■libxvid

Xvid encoding via xvidcore

http://www.xvid.org/

下載xvidcore-1.2.2.tar.gz

解壓,修改:

./build/generic/configure: “l(fā)ibxvidcore. <- “xvidcore.

編譯安裝:

cd xvidcore/build/generic
./configure –prefix=/olibs –disable-shared
make
make install

刪除/olibs/lib/libxvidcore.dll

ffmpeg編譯參數(shù):–enable-gpl –enable-libxvid


■libfaac、libfaad

ffmpeg內(nèi)置已經(jīng)支持aac編碼、解碼,不需要libfaac、libfaad了,而且libfaac是nonfree的,nonfree是unredistributable即禁止發(fā)布


【FFmpeg高級(jí)編譯】

假設(shè)安裝路徑為/FFmpeg/Release,假設(shè)第三方庫(kù)所在路徑為/olibs

配置編譯:

./configure \
–prefix=/FFmpeg/Release \
–disable-debug \
–disable-static \
–enable-shared \
–enable-gpl \
–enable-version3 \
–enable-avfilter \
–enable-avfilter-lavf \
–enable-memalign-hack \
–enable-avisynth \
–enable-libgsm \
–enable-libmp3lame \
–enable-libopencore-amrnb \
–enable-libopencore-amrwb \
–enable-libtheora \
–enable-libvorbis \
–enable-libx264 \
–enable-libxvid \
–extra-cflags=-I/olibs/include \
–extra-ldflags=-L/olibs/lib
make
make install

總結(jié)

以上是生活随笔為你收集整理的MinGw+Msys搭建环境 编译ffmpeg的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.xxxx国产 | 4388成人网| jizz日本18 | 久久国产精品综合 | 五月婷婷丁香激情 | youjizz少妇| 日本少妇吞精囗交视频 | av电影在线网站 | 女人被男人躁得好爽免费视频 | 国产suv精品一区二区三区 | 久草视频精品在线 | 欧美成人一二三区 | 中文字幕日韩欧美在线 | 精品黑人一区二区三区国语馆 | 色综合天天操 | 精品人妻互换一区二区三区 | 人人看人人澡 | 超碰97国产在线 | 国内精久久久久久久久久人 | 在线麻豆av | 欧美精品亚洲一区 | 给我免费观看片在线电影的 | 国产av一区二区三区精品 | 国产大学生自拍视频 | 毛片直接看 | 亚洲欧洲一二三区 | 人人人人爽 | 99激情| 米奇影视第四色 | 男女野外做受全过程 | 国产高清在线观看视频 | 青娱网电信一区电信二区电信三区 | 中文字幕日韩欧美一区二区三区 | 波多野结衣网站 | 中国大陆高清aⅴ毛片 | 一区二区三区观看 | 久久午夜鲁丝片午夜精品 | 女人下部全棵看视频 | 国产一区二区免费电影 | 超碰蜜桃 | 夜夜嗨老熟女av一区二区三区 | 免费视频一二三区 | 欧美性受xxxx黑人猛交88 | 日本污污网站 | 欧美不卡在线观看 | 欧美亚韩一区二区三区 | 天天插夜夜爽 | 午夜精品导航 | 狼人av在线 | 亚洲欧美一 | 天天综合网天天综合 | 国产麻豆乱码精品一区二区三区 | 丁香婷婷久久久综合精品国产 | 一级黄色片在线免费观看 | 91久久一区二区三区 | 雪白的扔子视频大全在线观看 | 国产免费91| 在线观看国产视频 | 国产91在线视频观看 | 日本免费毛片 | 成人无码www在线看免费 | 日韩精品在线观看网站 | 一区二区国产精品精华液 | 大屁股白浆一区二区三区 | 久久国产香蕉 | 亲嘴扒胸摸屁股免费视频日本网站 | 超碰人人人人人 | 被警察猛c猛男男男 | 四虎成人精品永久免费av九九 | 欧美激精品 | 极品美女一区二区三区 | 一级a毛片免费观看久久精品 | 色呦呦免费视频 | 一级在线| 免费在线不卡视频 | 国产成人+综合亚洲+天堂 | 麻豆changesxxx国产 | 久久精品色妇熟妇丰满人妻 | r级无码视频在线观看 | 日本激情在线 | 丰满人妻翻云覆雨呻吟视频 | 暖暖日本在线 | jizz少妇 | 超碰三级 | 一卡二卡三卡 | 国产午夜精品久久久久久久久久 | 国产精品无码av在线播放 | 韩国电影大尺度在线观看 | 成人手机av| 欧美在线亚洲 | 蜜臀av夜夜澡人人爽人人 | 精品看片 | 国产91精品一区二区 | 日韩成人av网址 | 大香伊人久久 | 日韩有码一区 | 视频在线观看 | 四虎影视黄色 | 97人人爽人人爽人人爽 |