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播放会发现提示缺库。

下一步研究如何能避免此问题。

相关文章
相关标签/搜索