天天看點

VS2015編譯ffmpeg 3.4.2VS2015編譯ffmpeg 3.4.2

https://blog.csdn.net/bobsweetie/article/details/50858358

https://blog.csdn.net/csdnwei/article/details/72628162

https://blog.csdn.net/uselym/article/details/78040225?locationNum=3&fps=1

VS2015編譯ffmpeg 3.4.2

界面元件用的:mintty

http://www.codelive.cn/index.php/archives/70/ https://www.cnblogs.com/CoderTian/p/7702731.html

使用VS2015編譯ffmpeg 3.4.2的過程記錄。

1.下載下傳安裝MSYS2,pacman可以省略,執行後面的直接安裝元件

http://www.msys2.org/
pacman -Syu
pacman -Su
           

2.安裝必須的元件

3.下載下傳ffmpeg 3.4.2

wget http://ffmpeg.org/releases/ffmpeg-3.4.2.tar.bz2
           

下載下傳後路徑:D:\msys64\home\sbdya

4.解壓:

bzip2 -d ffmpeg-3.4.2.tar.bz2
tar -xvf ffmpeg-3.4.2.tar
           

5.改名msys2下的link.exe,防止和VS2015的link.exe沖突

mv /bin/link.exe /bin/link_bak.exe
           

6.在開始菜單中運作 VS2015 x64 Native Tools Command Prompt

7.在控制台中運作:

d:\msys64\msys2_shell.cmd -mingw64 -msys -use-full-path
           

檢查編譯元件:

which cl link yasm cpp

#顯示如下内容

/c/Program Files (x86)/Microsoft Visual Studio /VC/BIN/amd64/cl

/c/Program Files (x86)/Microsoft Visual Studio /VC/BIN/amd64/link

/usr/bin/yasm

/usr/bin/cpp

04.04 修改msys2視窗代碼頁為GBK,避免編譯時顯示亂碼。

在視窗上右擊滑鼠,選擇[Options]菜單,選擇[Text],locale選擇:zh_CN,Character set 選擇 GBK。 

VS2015編譯ffmpeg 3.4.2VS2015編譯ffmpeg 3.4.2

8.開始編譯ffmpeg

cd ffmpeg-3.4.2/

./configure --toolchain=msvc --enable-shared --disable-static --disable-debug --prefix=./out/

make -j4 && make install

./configure --toolchain=msvc --enable-shared --disable-static --enable-encoder=libx264 --enable-encoder=mjpeg --enable-encoder=mpeg4 --enable-gpl --disable-debug --enable-x86asm\

--enable-libx264 --extra-cflags=-I/home/x264-bin/include --extra-ldflags=-LIBPATH:/home/x264-bin/lib --prefix=./out/

編譯成功,在out目錄下面;

其中的報錯:

1.c++ 常量中有換行符

fftools/ffprobe.c(3047): error C2001: 常量中有換行符

我就把這一行ffprobe.c的3047行列印字元給注釋了,兩處代碼:

//av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);

//print_str("compiler_ident", CC_IDENT);

還有如下報錯:也是因為CC_IDENT引起的,解決方法就是上面注釋

fftools/cmdutils.c(1119): error C2065: “slib”: 未聲明的辨別符

fftools/cmdutils.c(1119): error C2296: “%”: 非法,左操作數包含“char [138]”類型

fftools/cmdutils.c(1119): error C2059: 文法錯誤:“數字上的錯誤字尾”

fftools/cmdutils.c(1119): error C2059: 文法錯誤:“%”

fftools/cmdutils.c(1119): error C2017: 非法的轉義序列

fftools/cmdutils.c(1119): error C2001: 常量中有換行符

fftools/cmdutils.c(1150): error C2143: 文法錯誤: 缺少“)”(在“*”的前面)

fftools/cmdutils.c(1150): error C2143: 文法錯誤: 缺少“{”(在“*”的前面)

fftools/cmdutils.c(1150): error C2059: 文法錯誤:“)”

fftools/cmdutils.c(1151): error C2054: 在“options”之後應輸入“(”

fftools/cmdutils.c(1252): error C2143: 文法錯誤: 缺少“)”(在“*”的前面)

fftools/cmdutils.c(1252): error C2143: 文法錯誤: 缺少“{”(在“*”的前面)

fftools/cmdutils.c(1252): error C2059: 文法錯誤:“)”

fftools/cmdutils.c(1253): error C2054: 在“avclass”之後應輸入“(”

fftools/cmdutils.c(1261): error C2275: “AVInputFormat”: 将此類型用作表達式非法

繼續閱讀