<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    windows 下使用 MinGW + msys 編譯 ffmpeg

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    本文參考了網絡上的不少文章,但由于版本環境的問題參考文章并不能直接指導編譯,本文吸收多方經驗,并在自己多次編譯實驗的基礎上寫成,歡迎轉載,請注名出處。
        FFmpeg是在Linux平臺下開發的,但它同樣可以在其它操作系統環境中編譯運行,本文介紹的就是在windows下編譯FFmpeg。
    一 編譯準備
        您最好新建一個目錄專門用來保存以下下載的文件。
    1 下載 MinGW 和 MSYS
        MinGW(Minimalist GNU on Windows):一個可自由使用和自由發布的Windows特定頭文件和使用GNU工具集導入庫的集合,允許你生成本地的Windows程序而不需要第三方C運行時庫。
        到:http://sourceforge.net/projects/mingw/ 去下載即可 
        A 點擊“DownLoad mingw-get-inst-...exe”
        B 切換到頁面:download? Check your browser's security bar, or try a direct link, or try another mirror.
        C 點擊“direct link”下載類似:mingw-get-inst-20111118.exe 的文件
        提示:msys此處就不用再下載了,mingw-get-inst-20111118.exe 中已經包含了msys1.0,后面安裝的時候就可以看到該選項。
    2 下載 yasm(匯編編譯器)
        ffmpeg編譯的時候里面的匯編代碼需要yasm.exe
        去官網:http://yasm.tortall.net/Download.html 下載
        在Latest Release欄,直接下載:Win32 .exe (for general use on 32-bit Windows) 
        文件名類似為:yasm-1.2.0-win32.exe
    3 下載 ffmpeg
        ffmpeg可以到 http://www.ffmpeg.org/releases/ 下載
        選擇的一個最新版本下載即可,如:ffmpeg-0.8.6.tar.gz 
        文件名類似為:ffmpeg-0.8.6.tar.gz
        當然你也使用網上介紹的使用SVN直接下載源代碼的方法。  
        svn://svn.mplayerhq.hu/ffmpeg/trunk
    4 下載 mp3lame(支持mp3,可選項)
        為了讓編譯出來的ffmpeg支持對mp3格式的編解碼,您需要先下載lame。
        到:http://sourceforge.net/projects/lame/files/ 下載 
        文件名類似為:lame-3.99.2.tar.gz 的包。
    5 下載 x264(支持x264,可選項)
        為了讓編譯出來的ffmpeg支持對x264格式的編解碼,您需要先下載x264。
        到:http://www.videolan.org/developers/x264.html下載 
        文件名類似為:last_x264.tar.bz2 的包。
    6 下載 Xvid(支持Xvid,可選項)
        為了讓編譯出來的ffmpeg支持對Xvid格式的編解碼,您需要先下載Xvid。
        到:http://www.xvid.org/ 下載 
        文件名類似為:xvidcore-1.3.2.tar.gz 的包。
    7 下載 faad2(支持faad,可選項)
        到:http://www.audiocoding.com/downloads.html 下載:Version 2.7 bootstrapped TAR.GZ Package
        文件名類似為:faad2-2.7.tar.gz 的包。
    8 下載 faac(支持faac,可選項)
        到:http://www.audiocoding.com/downloads.html 下載:Version 1.28 bootstrapped TAR.GZ Package
        文件名類似為:faac-1.28.tar.gz 的包。
    9 下載 aacenc(支持aac,可選項)
        到:http://sourceforge.net/projects/opencore-amr/files/ 下載:vo-aacenc
        文件名類似為:vo-aacenc-0.1.1.tar.gz 的包。
    10 下載 amr-nb與amr-wb (早期ffmpeg支持3gp,可選項)
        到:http://www.penguin.cz/%7Eutx/amr 下載:amrnb-7.0.0.2.tar.bz2與amrwb-7.0.0.4.tar.bz2
        文件名類似為:amrnb-7.0.0.2.tar.tar 與amrwb-7.0.0.4.tar.tar 的包。
    11 下載 opencore-amr與vo-amrwbenc (支持3gp,可選項)
        到:http://sourceforge.net/projects/opencore-amr/files/ 下載:opencore-amr 與 vo-amrwbenc
        文件名類似為:opencore-amr-0.1.2.tar.gz 與vo-amrwbenc-0.1.1.tar.gz 的包。
    12 下載 SDL(支持SDL,可選項)
        SDL下載可以到:http://www.libsdl.org/download-1.2.php
        在Source Code欄選擇類似:SDL-1.2.14.tar.gz - GPG signed 進行下載,
        文件名類似為:SDL-1.2.14.tar.tar,此文件需要編譯才能生成lib庫。
        也可以直接下載 SDL-devel-1.2.14-mingw32.tar.gz (Mingw32),文件名類似為:SDL-devel-1.2.14-mingw32.tar.tar,此文件帶有編譯好的lib,在編譯ffmpeg時可以直接使用。
    13 下載 pthreadGC2.dll
        pthreadgc2.dll是功能強大的處理數字化影視作品編輯軟件premiere6運行所需的一個DLL文件。這是一個無威脅文件。屬于Open Source Software community project的文件。
        直接去baidu.com三搜索下載就可以了。
    二 編譯步驟
    1 安裝 mingw 和 msys
        執行下載文件:mingw-get-inst-20111118.exe,
        在第3步選擇“Download latest repository catalogues”
        選擇安裝路徑:C:\MinGW(我直接采用默認路徑,未做修改)
        在“Select Components”步驟中選擇:
          √  C Compiler (默認且一定選擇)
          √  C++ Compiler
          √  MSYS Basic System(選擇此項將會安裝msys,msys則不需要另外安裝)
          √  MinGW Developer ToolKit
        等待安裝完成!(需要等待一定的時間,因為安裝過程需要下載文件,可想而知,網速越快,安裝越快)
        安裝完成后,在C:\MinGW目錄下可以看到 msys 文件夾,msys也已經安裝。
    2 配置 msys.bat 批處理文件
        為了方便VS200X以及VS2010調用ffmpeg的動態庫,可以通過配置讓ffmpeg編譯時產生windows下調用dll對應的lib,當然,如果你沒有這個需要,那么就可以省略以下處理,直接進入步驟3。
        進入:C:\MinGW\msys\1.0\文件夾,使用UltraEdit打開msys.bat文件,在文件的最最前面加入如下一行:
        call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
        添加后效果如下:
          call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
             @echo off
             rem Copyright (C):  2001, 2002, 2003, 2004, 2005  Earnie Boyd
             rem   mailto:earnie@users.sf.net
             rem This file is part of Minimal SYStem
             rem   http://www.mingw.org/msys.shtml
             rem
             rem File:     msys.bat
             rem Revision:     2.4
             rem Revision Date:  December 8th, 2005
             rem ember to set the "Start in:" field of the shortcut.
             rem A value similar to C:\msys\1.0\bin is what the "Start in:" field needs
             rem to represent.
        其中“D:\Program Files\Microsoft Visual Studio 10.0”為你機器上安裝VS200X或VS2010的目錄,我的電腦安裝的是VS2010,并且安裝在了D盤。文件修改后保存即可。
    3 系統整合
        使用UltraEdit修改C:\MinGW\msys\1.0\etc目下的fstab文件,如果不存在fstab,請復制一份fstab.sample,然后改名為:fstab,再修改其內容為:C:/MinGW /mingw,也即為MinGW的安裝路徑。
    4 配置 yasm
        為了減少配置環境變量的麻煩,本處直接把 yasm-1.1.0-win32.exe 文件名修改成:yasm.exe,并放到系統目錄下:C:\WINDOWS\system32。
    5 編譯 mp3lame(可選項)
        lame-3.99.2.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,切換到lame目錄:D:\ffmpeg\lame-3.99.2
        $ cd /d
        $ cd ffmpeg
        $ cd lame-3.99.2
        再執行以下命令:
        $./configure --disable-shared (首選)
    或: $./configure --disable-static --enable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    6 編譯 x264(可選項)
        last_x264.tar.bz2 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,切換到x264目錄:D:\ffmpeg\x264-20111124-2245
        $ cd /d
        $ cd ffmpeg
        $ cd x264-20111124-2245
        再執行以下命令:
        $./configure --enable-shared --disable-asm
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    7 編譯 Xvid(可選項)
        xvidcore-1.3.2.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,切換到xvidcore目錄:D:\ffmpeg\xvidcore\build\generic
        $ cd /d
        $ cd ffmpeg
        $ cd xvidcore/build/generic
        再執行以下命令:
        $./configure --prefix=C:/MinGW/msys/1.0/local
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下。
        需要注意的就是:此處編譯加上了路徑
        如果make時出現:cc1.exe: error: unrecognized command line option '-mno-cygwin' 錯誤,請在./configure后make之前修改xvidcore\build\generic里的 platform.inc文件,直接刪除里面的“-mno-cygwin”。 
        具體可以參考:http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=111里2樓的回答,如果按他說的:I recommend re running ./bootstrap.sh after you do this.,我發現不太行,一運行bootstrap.sh后,platform.inc文件會被還原,并且./configure時也會還原該文件,所以我選擇在./configure后make前修改,可以編譯通過,目前沒檢驗Xvid是否可用。
    8 編譯 faad2(可選項)
        faad2-2.7.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到faac2目錄:D:\ffmpeg\faad2-2.7
        $ cd /d
        $ cd ffmpeg
        $ cd faad2-2.7
        再執行以下命令:
        $./bootstrap
        $./configure --disable-static --enable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    9 編譯faac(可選項)
        faac-1.28.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到faac2目錄:D:\ffmpeg\faac-1.28
        $ cd /d
        $ cd ffmpeg
        $ cd faac-1.28
        再執行以下命令:
        $./bootstrap
        $./configure --disable-static --enable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    10 編譯vo-aacenc (可選項)
        vo-aacenc-0.1.1.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到vo-aacenc目錄:D:\ffmpeg\vo-aacenc-0.1.1
        $ cd /d
        $ cd ffmpeg
        $ cd vo-aacenc-0.1.1
        再執行以下命令:
        $./configure --disable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    11 編譯amr-nb和amr-wb (早期ffmpeg版本,可選項)
        在編譯amrnb和amrwb之前還需要做點其它的準備工作:
        A 先到網上搜索下載wget工具,解壓后放到C:\MinGW\bin目錄下,此工具是個網絡下載工具,用來在編譯時自動下載3gpp源碼。 
        B 再先到http://downloads.sourceforge.net/gnuwin32/unzip-5.51-1-bin.zip 下載unzip-5.51-1-bin.zip后進行解壓,并把unzip-5.51-1-bin\bin中的unzip.exe拷貝到C:\MinGW\bin目錄下,此工具用來在編譯時自動解壓3gpp源碼。
        amrnb-7.0.0.2.tar.tar 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到amrnb目錄:D:\ffmpeg\amrnb-7.0.0.2
        $ cd /d
        $ cd ffmpeg
        $ cd amrnb-7.0.0.2
        再執行以下命令:
        $./configure --disable-static --enable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
        amrwb-7.0.0.4.tar.tar 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到amrwb目錄:D:\ffmpeg\amrwb-7.0.0.4
        $ cd /d
        $ cd ffmpeg
        $ cd amrwb-7.0.0.4
        再執行以下命令:
        $./configure --disable-static --enable-shared
        $ make
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    12 編譯opencore-amr 和vo-amrwbenc (可選項)
        opencore-amr-0.1.2.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。
        如果是opencore-amr-0.1.1.tar.gz請注釋掉以下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
        切換到opencore-amr目錄:D:\ffmpeg\ opencore-amr-0.1.2
        $ cd /d
        $ cd ffmpeg
        $ cd opencore-amr-0.1.2
        再執行以下命令:
        $./configure --disable-shared
        $ make CC=gcc
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
        vo-amrwbenc-0.1.1.tar.gz 接壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,已經啟動的話就不用再重新啟動了。切換到vo-amrwbenc目錄:D:\ffmpeg\ vo-amrwbenc-0.1.1
        $ cd /d
        $ cd ffmpeg
        $ cd vo-amrwbenc-0.1.1
        再執行以下命令:
        $./configure --disable-shared
        $ make CC=gcc
        $ make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下
    13 編譯SDL(可選項)
       SDL-1.2.14.tar.tar 解壓到:D:\ffmpeg\ 目錄下, 雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,切換到SDL目錄:D:\ffmpeg\SDL-1.2.14,切換方法如下:
        $ cd /d
        $ cd ffmpeg
        $ cd SDL-1.2.14
        再執行以下命令:
        ./configure
        make
        make install
        編譯結果在:C:\MinGW\msys\1.0\local 目錄下 
        注意:如果是使用編譯好的SDL-devel-1.2.14-mingw32.tar.tar,那么就可以省掉上面的編譯工作,直接解壓SDL-devel-1.2.14-mingw32.tar.tar文件即可。自己編譯或直接使用編譯好的都需要做下面的修改和拷貝工作。
        使用UltraEdit打開C:\MinGW\msys\1.0\local\bin下的 sdl-config文件
        把 prefix=/usr 該成: prefix=c:/mingw
        其中:c:/mingw 為 mingw的安裝路徑,請根據你的安裝進行修改。為了編譯時msys能識別sdl并開啟 SDL support yes 進行編譯,請把C:\MinGW\msys\1.0\local編譯結果bin、include和lib中有關sdl的拷貝一份到C:\MinGW\的對應目錄中。
    14 拷貝編譯結果
        C:\MinGW\msys\1.0\local  到 D:\ffmpeg\ffmpeg-0.8.6
        bin拷貝到 bin中
        include拷貝到 include中
        lib拷貝到 lib中
        當然該拷貝過程你可以不做,只要在編譯的時候把路徑指到:C:\MinGW\msys\1.0\local里面。
    15 編譯 ffmpeg
        ffmpeg-0.8.6.tar.bz2 解壓到:D:\ffmpeg\ 目錄下,雙擊“C:\MinGW\msys\1.0\msys.bat”,啟動“MinGW32”,切換到ffmpeg目錄:D:\ffmpeg\ffmpeg-0.8.6,切換方法如下:
        $ cd /d
        $ cd ffmpeg
        $ cd ffmpeg-0.8.6
        如果你的“MinGW32”沒有關閉,可以直接切換路徑到:D:\ffmpeg\ffmpeg-0.8.6。
        再執行以下命令:
        $ ./configure --enable-shared --disable-static --enable-ffplay
        --enable-nonfree --enable-memalign-hack
        --enable-libmp3lame
        --enable-gpl--enable-libx264   
        --enable-libxvid
        --enable-faad --enable-libfaac
        --enable-libvo-aacenc
        --enable-version3 --enable-libopencore-amrnb   
        --enable-libopencore-amrwb --enable-libvo-amrwbenc
        --extra-cflags=-Id:/ffmpeg/ffmpeg-0.8.6/include
        --extra-ldflags=-Ld:/ffmpeg/ffmpeg-0.8.6/lib
        請耐心等待一段時間,以上命令不能直接換行哦并且根據ffmpeg的版本不同有所變化,具體看./configure --help,你知道的。。。
        $ make
        需要等待很長一段時間,等待編譯結束。
        為了匯總編譯結果,請繼續執行以下命令:
        $ make install
        等待完成,在C:\MinGW\msys\1.0\local中將會生成 bin、include、lib等文件夾,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和頭文件等。
    16 運行測試
        直接雙擊運行”ffplay.exe”,如果提示沒有“pthreadGC2.dll”文件,你可以包“pthreadGC2.dll”直接拷貝到當前目錄,也可放到系統目錄C:\WINDOWS\system32中。
    ffplay f:/xxx.mp4


    參考:
    http://blog.csdn.net/yangshu168/archive/2010/01/17/5204269.aspx
    http://blog.csdn.net/himulakensin/article/details/6693457
    http://blog.csdn.net/huangxiansheng1980/article/details/5712003

     

    原文地址:http://blog.chinaunix.net/uid-20718335-id-2980793.html

     

    另一篇資料:http://download.csdn.net/detail/leixiaohua1020/6389413

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全