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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

win7 X64 编译ffmpeg

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 win7 X64 编译ffmpeg 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于FFMpeg是基于Linux開發的開源項目,源代碼和Windows下最常見的Visual Studio提供的C/C++編譯器不兼容,

因此它不能使用MSVC++編譯。要想使用FFMpeg,最先要解決的問題就是在Windows下配置一個類似Linux的編譯環境,

將FFMpeg編譯為二進制庫以后,再利用其進行進一步開發。MSVC++并不嚴格的遵循C標準,所以整個編譯過程必須使用MSys+MinGW系統來完成。

如果選擇編譯動態鏈接庫(dll),這些庫將和其他的動態鏈接庫一樣在使用上沒什么差別,可以使用MSVC++來鏈接這些庫到自己的程序,只有這種情況下MSVC++是被支持的。
?

一、編譯過程

1、準備MSys+MinGW系統

下載整合版 Download mingw-get-setup.exe (86.5 kB)

之前編譯c++ 時用過,http://blog.csdn.net/kuaile123/article/details/11024873

不多說了,安裝目錄里 C:\MinGW\msys\1.0 就是 MSys

?

2、修改“msys.bat”
?用文本編輯器(如NotePad++)打開C:\MinGW\msys\1.0\msys.bat,由于打算用MSVC++編譯程序,所以需要有.lib文件才能鏈接到FFmpeg的庫,這些.lib文件可以使用微軟的工具鏈中lib命令產生。把下面一行加到msys.bat的最前面,把路徑替換成機器上vcvars32.bat實際存在的路徑,比如我的在“D:\Program Files\Microsoft Visual Studio2010\VC\bin”,于是就添加:
 call "D:\Program Files\Microsoft Visual Studio2010\VC\bin\vcvars32.bat"

3、下載ffmpeg源碼

由于ffmpeg的源代碼存放在SVN倉庫里,所以必須使用命令行程序或是圖形界面程序來訪問。

首先下載TortoiseSVN,安裝完成后,在想要存放ffmpeg下郵件,選擇check out,輸入地址svn://svn.mplayerhq.hu/ffmpeg/trunk

點擊開始,開始下載,如下圖所示:我下載的版本40多M,網速不好的時候下載很容易中斷。

?

4、編譯

首先運行msys.bat,進入shell界面

轉到ffmpeg所在目錄: cd D:/ffmpeg

注意:目錄名使用正斜杠來分割,而不是Windows所使用的反斜杠(比如說要寫成"D:/ffmpeg"而不是"D:\ffmpeg")。

文件名或目錄名中如果帶有空格,必須用雙引號括起(例如這樣"/C/Program Files",帶有雙引號)。

不然會提示沒有此目錄

盤符(例如"C:\")可以從根目錄處訪問(像這樣"/C/")。

?

(1) 編譯靜態庫

(1.1)配置:

./configure --enable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"

注意執行這句話時出現的問題,yasm是匯編編譯器,因為ffmpeg中為了提高效率用到了匯編指令,比如MMX和SSE。

這個過程要花費較長的時間,開始會有較長的時間沒有反應。其中的prefix是msys的安裝路徑

如果出現提示: yasm not found, use --disable-yasm for a crippled build

解決方法(a)在網上下載一個yasm.exe并安裝在mingw/bin下面,編譯代碼時你注意看,會發現asm后綴的文件用的編譯器是yasm,c文件用的是gcc;

下載地址 http://yasm.tortall.net/Download.html?注意把下載下來的改名為 yasm.exe ,不然還是提示找不到。由于mingw為32位版本,最好下32位,以后后面有問題。

(b)不使用匯編指令,在配置時加上,即./configure??--disable-yasm

(1.2)編譯:make

(1.3)安裝: make install

??????????? 安裝只是把要開發使用的庫文件拷貝到c:/msys/1.0/lib/目錄中,頭文件拷貝到c:/msys/1.0/include/目錄中。產生的庫文件為.a文件

?

(2)編譯動態庫

如果希望使用FFmpeg包含的libavcodec庫開發多媒體文件處理程序,還需要編譯libavcodec的dll動態鏈接庫。

(2.1)配置:

./configure --enable-shared --disable-static --enable-memalign-hack --prefix=C:/MinGW/msys/1.0 --extra-cflags="-fno-common"

(2.2)編譯:

??? make

注意:當運行到make這一步時出現問題:

c:\mingw\include\io.h: error : unknown typename 'off64_t'

make: ***[libavformat/applehttp.o]? error1

?

發現在io.h中已經

/* MSVC's io.h contains the stuff from dir.h, so I will too.* NOTE: This also defines off_t, the file offset type, through* an inclusion of sys/types.h */#include <sys/types.h> /* To get time_t. */


sys/types.h 文件中有如下一段:

#ifndef _OFF64_T_ #define _OFF64_T_ typedef __int64 _off64_t; #ifndef __STRICT_ANSI__ typedef __int64 off64_t; #endif /* __STRICT_ANSI__ */ #endif /* ndef _OFF64_T */


已經定義了off64_t,特別奇怪,不知道為啥沒法識別。

不管我是加了 #undef? _OFF64_T_ 還是 將周圍的變量注釋掉 只保留 typedef __int64 _off64_t; typedef __int64 off64_t;

都會出現更多的錯,我以為是64位系統的原因,但是我又在32位電腦上進行編譯,同樣的問題,不知道這是什么原因。在網上查也沒有人有這種問題,太奇怪了。

?

參考博客: http://blog.csdn.net/dragon101788/article/details/8679092

總結

以上是生活随笔為你收集整理的win7 X64 编译ffmpeg的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。