linux 下面编译FFMPEG

转载 2016年08月31日 11:53:42

1.安装SDL,

1、make时出现 fatal error: X11/extensions/XShm.h: No such file or directory

解决办法:搜到的解决办法是

sudo apt-get install x11proto-xext-dev

sudo apt-get install libxext-dev

========================================================================

2、之后make又出现以下问题:

./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for _XData32?
 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
                 ^
./src/video/x11/SDL_x11dyn.c:95:5: note: in definition of macro 釹DL_X11_SYM?
  rc fn params { ret p##fn args ; }
     ^
In file included from ./src/video/x11/SDL_x11dyn.h:34:0,
                 from ./src/video/x11/SDL_x11dyn.c:26:
/usr/include/X11/Xlibint.h:568:12: note: previous declaration of 鈅XData32?was here
 extern int _XData32(
            ^
make: *** [build/SDL_x11dyn.lo] Error 1


解决方案:查阅了一些资料,发现是libx11-dev版本问题(查看版本如图),版本>1.5.99,所以需要修改src/video/x11/SDL_x11sym.h 文件,按照提示修改168行,


修改如下:

原来是:SDL_X11_SYM(int,_XData32,(Display *dpy,register  long *data,unsigned len),(dpy,data,len),return)

改后添加一个单词即可:(_Xconst)

SDL_X11_SYM(int,_XData32,(Display *dpy,register_Xconst long *data,unsigned len),(dpy,data,len),return)


再make 和 sudo make install就可以了。



2.将FFMPEG不要拷到共享目录,拷到/usr/local/ffmpeg下面,


到ffmpeg的官网下载最新的源码包http://www.ffmpeg.org/。并解压到你习惯的位置(我这里依然解压在/根目录下)然后对他的配置文件稍作修改,原因是为了让编译出来的so库适合Android。

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

改成

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'

这里无脑改即可,不需要做其它修改。


下面执行:

./configure --enable-shared --disable-yasm --enable-ffplay --prefix=/usr/local/ffmpeg


3.make install

4.要把安装后的所有SO,拷贝到/usr/local/lib下,才能运行,或者程序运行时,指定运行加载的库路径。

linux下基于jrtplib库的实时传送实现

linux 下基于jrtplib库的实时传送实现一、RTP 是进行实时流媒体传输的标准协议和关键技术 实时传输协议(Real-time Transport Protocol,PRT)是在 Intern...
  • neohuo
  • neohuo
  • 2006年03月08日 12:41
  • 6841

最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)

转载自: http://blog.csdn.net/leixiaohua1020/article/details/38868499 简介 之前做过一个FFMPEG+SDL的简单播放器:《100...
  • xqt8888
  • xqt8888
  • 2015年02月10日 14:59
  • 1503

linux虚拟机下面编译ffmpeg,并调用其main方法

ffmpeg的确非常的强大,但是它显的太专业:     很多像我这样的菜鸟,不知道怎么编译     很多人在linux环境下编译通过,但是在cygwin下编译不通过     很多人成功编译了ff...
  • qlsusu
  • qlsusu
  • 2012年08月02日 12:39
  • 1509

ffmpeg在linux下面的编译和导入eclipse

分为二部分,第一部分是ffmpeg的编译,第二部分是如何导入eclipse 第一部分 ffmpeg在linux下面的编译        1、下载ffmpeg。     在网上搜索一下,或者到...
  • cugkuan
  • cugkuan
  • 2014年01月13日 10:26
  • 1184

终于在android下面完成了ffmpeg最新版的编译,弱弱的记录

终于在android下面完成了ffmpeg最新版的编译,弱弱的记录下 终于在android下面完成了ffmpeg最新版的编译 --lihn1987(转载请注明作者)     ...

Mac下面编译Android FFmpeg3.2.4

需要搞直播,打算使用ffmpeg进行推流,于是在Mac下进行了编译FFMmpeg。1、下载ffmpeg源码,我下载的是ffmpeg-3.2.4;2、配置好build_android.sh编译安卓脚本,...

Ubuntu 8.04 Linux系统下面编译更新内核版本

这是我从网上看到的关于linux内核升级的文章,虽然是转载过来的,但是我把别人的东西变成自己的东西,这一点是最重要的。我自己也把ubuntu8.04的内核升级成功,从2.6.24版本的内核升级到2.6...
  • longkg
  • longkg
  • 2013年02月21日 10:13
  • 216

Linux系统下面的交叉编译浅析

Linux下交叉编译环境构建(arm-linux-gcc-3.4.1.tar.bz2 )   2009-03-03 10:051.下载arm-linux-gcc-3.4.1.tar.bz2...

Linux 下面编译内核模块的 方法

(1) 选择好你的内核版本,内核模块经常是和内核版本紧密相关的,建议尽量选择高内核的版本,否则有可能会遇到很大的问题。 (2) 下载内核代码到/usr/src/kernel/目录。如果有了,则不用下载...
  • wjw7869
  • wjw7869
  • 2016年07月09日 15:31
  • 1355

在linux下面手动编译Mongodb cpp驱动

之前做了一些关于mongodb replication的一些调研,主要集中在开源软件Tungsten上。这个开源软件是用java写的,和mongo的交互也就用的java。可是真的要用起来,发现我们需要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 下面编译FFMPEG
举报原因:
原因补充:

(最多只允许输入30个字)