FFMPEG install step on windows

FFMPEG install step on windowshtml

1. 下載MinGWMSYSwindows

連接: https://sourceforge.net/projects/mingw/files/bash

Download mingw-get-setup.exe (86.5 kB)ui

雙擊進行安裝,安裝後路徑C:\MinGWspa

雙擊C:\MinGW\msys\1.0\msys.bat能夠啓動MinGW.net

 

2. 下載yasm命令行

http://yasm.tortall.net/Download.htmlcode

yasm-1.3.0-win64.exe,修改成yasm.exe複製到MinGW的bin目錄下C:\MinGW\binhtm

 

3. 下載Gettextblog

1)、下載gettext-runtime_0.18.1.1-2_win32.zip,地址http://www.gnu.org/software/gettext/

2)、將bin目錄下的intl.dll放到C:\MinGW\bin 目錄下。

 

4. 下載pkg-config.exe

1)、下載pkg-config

地址http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip (注:沒有win64對應的包)

2)、將壓縮包的bin目錄的pkg-config.exe複製到C:\MinGW\bin目錄下。

 

5. 下載pkg-config.exe依賴庫

1)、下載地址:http://ftp.acc.umu.se/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip

2)、將壓縮包bin目錄全部的.dll,放到C:\MinGW\bin 目錄下。

 

6. 下載ffmpeg

http://www.ffmpeg.org/

編譯ffmpeg

雙擊運行  C:\MinGW\msys\1.0\msys.bat,便可進入 MinGW 的工做目錄了。

他和cmd命令有區別,反斜槓須要換成斜槓,盤符D:也要改爲/d

輸入命令 "ls" , 這等價於 "dir"。列出當前目錄下的文件。

輸入 cd ffmpeg,進入ffmpeg 目錄。

在命令行下輸入以下命令:

./configure --enable-memalign-hack --enable-shared

make

make install 

即獲得ffmpeg.exe, ffprobe.exe

 

註釋:

FFmpeg-2.8.6在MinGW下可以編譯成功

Ffmpeg-3.0下make報錯

FFmpeg-3.1.3下make報錯

 

7. 編譯ffplay

可是在編譯ffmpeg的過程當中,老是不能編譯出來ffplay,查看config.mak文件,找CONFIG_FFPLAY 一行,發現前面老是有!結果make 怎麼都出錯,報告ffplay.c編譯錯誤

解決辦法:

下載SDL-1.2.15,因爲SDL v2和SDL v1區別比較大,在沒有特殊需求的狀況下建議使用SDL v1,並且SDL v2的發佈版本有明顯的編譯問題。

將壓縮包下的include、lib、bin分別放大mingw安裝目錄的對應目錄下若是採用默認安裝目錄c:\mingw,那麼能夠拷貝到c:\mingw\include、c:\mingw\lib、c:\mingw\bin,特別注意include文件不要包含文件夾,直接拷貝.h文件。

這樣在FFmpeg的configure的時候,就能夠檢測到SDL,並經過配置,編譯生成ffplay.exe。

完成以後檢查下SDL是否正常檢測到,能夠查看FFmpeg編譯目錄下的config.h文件,找到HAVE_SDL、CONFIG_SDL宏,若是都是1,表示SDL配置成功,能夠放心編譯出ffplay了,以及查看config.mak是否CONFIG_FFPLAY=yes。

修改內容SDL-1.2.15\bin\sdl-config

#!/bin/sh
	
	prefix=/c/mingw/
	exec_prefix=${prefix}
	exec_prefix_set=no
	libdir=${exec_prefix}/lib
	
	usage="\
	Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs]"
	#usage="\
	#Usage: sdl-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--cflags] [--libs] [--static-libs]"
	
	if test $# -eq 0; then
	      echo "${usage}" 1>&2
	      exit 1
	fi
	
	while test $# -gt 0; do
	  case "$1" in
	  -*=*) optarg=`echo "$1" | LC_ALL="C" sed 's/[-_a-zA-Z0-9]*=//'` ;;
	  *) optarg= ;;
	  esac
	
	  case $1 in
	    --prefix=*)
	      prefix=$optarg
	      if test $exec_prefix_set = no ; then
	        exec_prefix=$optarg
	      fi
	      ;;
	    --prefix)
	      echo $prefix
	      ;;
	    --exec-prefix=*)
	      exec_prefix=$optarg
	      exec_prefix_set=yes
	      ;;
	    --exec-prefix)
	      echo $exec_prefix
	      ;;
	    --version)
	      echo 1.2.15
	      ;;
	    --cflags)
	      echo -I${prefix}/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main
	      ;;
	    --libs)
	      echo -L${exec_prefix}/lib  -lmingw32 -lSDLmain -lSDL  -mwindows
	      ;;
	#    --static-libs)
	##    --libs|--static-libs)
	#      echo -L${exec_prefix}/lib  -lmingw32 -lSDLmain -lSDL  -mwindows  -lm -luser32 -lgdi32 -lwinmm -ldxguid
	#      ;;
	    *)
	      echo "${usage}" 1>&2
	      exit 1
	      ;;
	  esac
	  shift
	done

其中ffplay的編譯參考連接:

http://www.cnblogs.com/tocy/p/windows_mingw_compile_ffmpeg_with_ffplay.html

 

問題:

在經過cmd命令,調用ffplay.exe播放會發現提示缺庫。

下一步研究如何能避免此問題。

相關文章
相關標籤/搜索