【FFMPEG】VS2015 FFMPEG 4.0.1編譯記錄

1、準(zhǔn)備工具

VS2015 :自己找吧(笑)
FFMPEG : http://ffmpeg.org/download.html#releases
MSYS2 : http://www.msys2.org/

2、設(shè)置編譯環(huán)境

安裝MSYS2:


文件目錄

打開(kāi)MSYS2,mingw32聊疲、mingw32分別對(duì)應(yīng)32位、64位的工具鏈寄纵,因?yàn)橛肰S編譯立美,這里我們不需要用到,照道理應(yīng)該用msys2就可以了隘竭,之后安裝3個(gè)軟件包:

# normal msys2 packages
pacman -S make pkgconf diffutils

安裝匯編編譯器Nasm或者Yasm:

# normal msys2 packages
pacman -S Nasm

之后關(guān)閉 msys2 終端塘秦,打開(kāi) cmd.exe 終端:

BAT腳本 msvc_cmd_x86.bat

:: msvc_cmd_x86.bat
@echo off
set VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio 14.0"  
cmd /k "%VS_DIR%\VC\vcvarsall.bat" x86
cmd.exe

BAT腳本 msvc_cmd_x64.bat

:: msvc_cmd_x64.bat
@echo off
set VS_DIR="C:\Program Files (x86)\Microsoft Visual Studio 14.0"
cmd /k "%VS_DIR%\VC\vcvarsall.bat" amd64
cmd.exe

上面是我為方便打開(kāi)終端的幾條命令,分別x86动看,amd64的bat腳本尊剔。

你可以手動(dòng)輸入vcvarsall.bat x86或者vcvarsall.bat amd64,VS_DIR變量是vs的目錄路徑菱皆。vcvarsall.bat主要是幫助設(shè)置編譯環(huán)境變量须误,在當(dāng)前終端vcvarsall.bat amd64就是設(shè)置了amd64的編譯環(huán)境,反之x86也一樣仇轻。(下面是按編譯amd64為例)

設(shè)置好后京痢,再在當(dāng)前終端打開(kāi)msys2,之后設(shè)置VC工具鏈命令位置篷店,在終端輸入:

$ export PATH="/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64":$PATH

選擇對(duì)應(yīng)的工具鏈:

x86 : /C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin
amd64 :/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64

VS路徑要放在$PATH前面祭椰,有相同名字的命令,前面的會(huì)優(yōu)先使用船庇。跟著命令:

which link

看看是不是指向 /C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64吭产。到這里環(huán)境已經(jīng)設(shè)置好了。

3鸭轮、編譯

For MSVC:
./configure --toolchain=msvc
make
make install

假如你是靜態(tài)編譯的話臣淤,庫(kù)會(huì)是.a結(jié)尾,這不影響使用窃爷,makefile里面定義好的邑蒋。

#pragma comment(lib,"libavdevice.a")

也可以,在cmd命令行打包成一個(gè)庫(kù)按厘,前提是已經(jīng)設(shè)置好VS工具鏈的環(huán)境医吊。

lib /out:ffmpeg_static.lib *.a

附件、

配置腳本

msys2終端命令:

x86:

動(dòng)態(tài)編譯 :$ sh msvc.h x86 shared
靜態(tài)編譯 :$ sh msvc.h x86 static 
(不能同時(shí)動(dòng)態(tài)逮京、靜態(tài)編譯)
Make : $ sh msvc.h make_x86

x64:

動(dòng)態(tài)編譯 : $ sh msvc.h x64 shared
靜態(tài)編譯 : $ sh msvc.h x64 static 
(不能同時(shí)動(dòng)態(tài)卿堂、靜態(tài)編譯)
Make : $ sh msvc.h make_x64

文件名: msvc.h

# 文件名: msvc.h
# normal msys2 packages
#pacman -S make pkgconf diffutils

pause(){
    read -p "Press any key continue.\n" varpause
    echo "continue..."
}


make_configure(){

CONFIG_ARGS="$1 --prefix=./ffmpeg-build-$2"
CONFIG_MSVC_EXFLAGS="--toolchain=msvc --extra-cflags=-utf-8"
    
    case $3 in  
        shared)
        echo  "configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS --enable-$3"
        pause
        sh configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS --enable-shared
        ;;  
    
        static)
        echo  "configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS --enable-$3"
        pause
        sh configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS --enable-static
        ;;
    
        *)
        echo  "configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS"
        pause
        sh configure $CONFIG_MSVC_EXFLAGS $CONFIG_ARGS
        ;;
    
    esac
    
    return 0
}



case $1 in
    x64)
    export PATH="/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64":$PATH
    make_configure "--arch=amd64 --disable-debug" $1 $2
    ;;
    

    x86)
    export PATH="/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin":$PATH
    make_configure "--arch=i386 --disable-debug" $1 $2
    ;;

    x64_Debug)
    export PATH="/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64":$PATH
    make_configure --arch=amd64 $1 $2
    ;;

    x86_Debug)
    export PATH="/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin":$PATH
    make_configure --arch=i386 $1 $2
    ;;      

    make_x64)
    export PATH="/C/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64":$PATH
    echo "x64:$PATH"        
    make
    ;;
    
    make_x86)
    export PATH="/c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin":$PATH
    echo "x86:$PATH"        
    make
    ;;
    
    *)
    ;;
    
esac

注、腳本中的 “--extra-cflags=-utf-8” 是給VS的命令,這里是我事后加上的草描,防止utf-8編碼問(wèn)題览绿,如果編譯有問(wèn)題的話,請(qǐng)去掉穗慕。

可能發(fā)生的問(wèn)題

1饿敲、代碼頁(yè) 65001
編譯過(guò)程如果發(fā)生 "config.h warning : ***代碼頁(yè) 65001",之后可能中斷逛绵,這是由于vs用的utf-8帶bom怀各,而ffmpeg的utf-8不帶引起的問(wèn)題。你需要用notepad打開(kāi)config.h再轉(zhuǎn)換為帶bom的utf-8格式繼續(xù)make就可以术浪。上面的 “--extra-cflags=-utf-8” 就是因?yàn)檫@問(wèn)題加上的瓢对,但未測(cè)試過(guò),有問(wèn)題請(qǐng)刪除添吗。

【編輯于 2018.06.26】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沥曹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碟联,更是在濱河造成了極大的恐慌妓美,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鲤孵,死亡現(xiàn)場(chǎng)離奇詭異壶栋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)普监,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)贵试,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人凯正,你說(shuō)我怎么就攤上這事毙玻。” “怎么了廊散?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵桑滩,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我允睹,道長(zhǎng)运准,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任缭受,我火速辦了婚禮胁澳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘米者。我一直安慰自己韭畸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胰丁,像睡著了一般普筹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隘马,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音妻顶,去河邊找鬼酸员。 笑死,一個(gè)胖子當(dāng)著我的面吹牛讳嘱,可吹牛的內(nèi)容都是我干的幔嗦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼沥潭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼邀泉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钝鸽,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤汇恤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拔恰,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體因谎,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年颜懊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了财岔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡河爹,死狀恐怖匠璧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咸这,我是刑警寧澤夷恍,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站炊苫,受9級(jí)特大地震影響裁厅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侨艾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一执虹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唠梨,春花似錦袋励、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)盖灸。三九已至,卻和暖如春磺芭,著一層夾襖步出監(jiān)牢的瞬間赁炎,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工钾腺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留徙垫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓放棒,卻偏偏與公主長(zhǎng)得像姻报,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间螟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容