如何在MAC上编译FFMpeg
来源:互联网 发布:mac删除当前用户 编辑:程序博客网 时间:2024/05/29 06:35
刚刚入手了一台MAC,所以想把FFMpeg在上面编译一下(以前都是在linux上面玩的,在MAC上还是第一次)
废话少说
首先,下载FFMpeg的代码,具体链接:
http://www.ffmpeg.org
我下载的版本是ffmpeg-2.7.2.tar.bz2,之后就是解压和运行configure脚本(根据情况,考虑是否yasm)
之后就是make -j 8
编译过程很顺利,但是我发现ffplay这个文件没有生成。看过config.log之后才发现,ffplay是依赖SDL的,里面很多东西都是调用SDL来实现的。
那么,问题来了,怎么办?本着程序员的精神,自己下载SDL,编译安装。具体链接:
http://www.libsdl.org
我下载的版本是SDL-1.2.15.tar.gz,之后就是解压安装
但是,路曼曼其修远兮,哪有那么容易的事情,我发现了一些x window相关的编译错误,才发现高大上的苹果把x window在最新的
MAC上面去掉了。不过,还好,事情做的不是很绝,苹果提供了一个链接,可以下载相关的组件。具体链接:
http://xquartz.macosforge.org/landing/
这个事我试图尝试运行/usr/X11R6/bin下面的可执行文件,苹果提供的链接地址。没办法,人家都已经设计好了,只能下载安装。
万事具备,只欠东风。终于有开始编译SDL了。其中只有两个编译错误,我的patch在下面。
diff -u -w -r SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h SDL-1.2.15.ok/src/video/quartz/SDL_QuartzVideo.h
--- SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h 2012-01-19 14:30:06.000000000 +0800
+++ SDL-1.2.15.ok/src/video/quartz/SDL_QuartzVideo.h 2015-09-22 17:17:59.000000000 +0800
@@ -91,7 +91,7 @@
CGDirectDisplayID display; /* 0 == main display (only support single display) */
const void *mode; /* current mode of the display */
const void *save_mode; /* original mode of the display */
- CGDirectPaletteRef palette; /* palette of an 8-bit display */
+ //CGDirectPaletteRef palette; /* palette of an 8-bit display */
NSOpenGLContext *gl_context; /* OpenGL rendering context */
NSGraphicsContext *nsgfx_context; /* Cocoa graphics context */
Uint32 width, height, bpp; /* frequently used data about the display */
diff -u -w -r SDL-1.2.15/src/video/x11/SDL_x11sym.h SDL-1.2.15.ok/src/video/x11/SDL_x11sym.h
--- SDL-1.2.15/src/video/x11/SDL_x11sym.h 2012-01-19 14:30:06.000000000 +0800
+++ SDL-1.2.15.ok/src/video/x11/SDL_x11sym.h 2015-09-22 17:29:32.000000000 +0800
@@ -165,7 +165,7 @@
*/
#ifdef LONG64
SDL_X11_MODULE(IO_32BIT)
-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
+SDL_X11_SYM(int,_XData32,(Display *dpy,register const long *data,unsigned len),(dpy,data,len),return)
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
#endif
之后就是一路畅通,SDL编译大告成功。紧接着就是ffplay,哈哈,OK了。
如果大家遇到和我一样的问题,希望能对你们有所帮助。
废话少说
首先,下载FFMpeg的代码,具体链接:
http://www.ffmpeg.org
我下载的版本是ffmpeg-2.7.2.tar.bz2,之后就是解压和运行configure脚本(根据情况,考虑是否yasm)
之后就是make -j 8
编译过程很顺利,但是我发现ffplay这个文件没有生成。看过config.log之后才发现,ffplay是依赖SDL的,里面很多东西都是调用SDL来实现的。
那么,问题来了,怎么办?本着程序员的精神,自己下载SDL,编译安装。具体链接:
http://www.libsdl.org
我下载的版本是SDL-1.2.15.tar.gz,之后就是解压安装
但是,路曼曼其修远兮,哪有那么容易的事情,我发现了一些x window相关的编译错误,才发现高大上的苹果把x window在最新的
MAC上面去掉了。不过,还好,事情做的不是很绝,苹果提供了一个链接,可以下载相关的组件。具体链接:
http://xquartz.macosforge.org/landing/
这个事我试图尝试运行/usr/X11R6/bin下面的可执行文件,苹果提供的链接地址。没办法,人家都已经设计好了,只能下载安装。
万事具备,只欠东风。终于有开始编译SDL了。其中只有两个编译错误,我的patch在下面。
diff -u -w -r SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h SDL-1.2.15.ok/src/video/quartz/SDL_QuartzVideo.h
--- SDL-1.2.15/src/video/quartz/SDL_QuartzVideo.h 2012-01-19 14:30:06.000000000 +0800
+++ SDL-1.2.15.ok/src/video/quartz/SDL_QuartzVideo.h 2015-09-22 17:17:59.000000000 +0800
@@ -91,7 +91,7 @@
CGDirectDisplayID display; /* 0 == main display (only support single display) */
const void *mode; /* current mode of the display */
const void *save_mode; /* original mode of the display */
- CGDirectPaletteRef palette; /* palette of an 8-bit display */
+ //CGDirectPaletteRef palette; /* palette of an 8-bit display */
NSOpenGLContext *gl_context; /* OpenGL rendering context */
NSGraphicsContext *nsgfx_context; /* Cocoa graphics context */
Uint32 width, height, bpp; /* frequently used data about the display */
diff -u -w -r SDL-1.2.15/src/video/x11/SDL_x11sym.h SDL-1.2.15.ok/src/video/x11/SDL_x11sym.h
--- SDL-1.2.15/src/video/x11/SDL_x11sym.h 2012-01-19 14:30:06.000000000 +0800
+++ SDL-1.2.15.ok/src/video/x11/SDL_x11sym.h 2015-09-22 17:29:32.000000000 +0800
@@ -165,7 +165,7 @@
*/
#ifdef LONG64
SDL_X11_MODULE(IO_32BIT)
-SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
+SDL_X11_SYM(int,_XData32,(Display *dpy,register const long *data,unsigned len),(dpy,data,len),return)
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
#endif
之后就是一路畅通,SDL编译大告成功。紧接着就是ffplay,哈哈,OK了。
如果大家遇到和我一样的问题,希望能对你们有所帮助。
0 0
- 如何在MAC上编译FFMpeg
- FFmpeg在Mac上完美编译
- 在mac osx10.8.5 xcode5.1上编译ffmpeg
- Mac 上编译 ffmpeg 方法
- 在mac上安装ffmpeg
- FFmpeg在iOS上编译
- 在iOS上编译FFmpeg
- ffmpeg在windows上编译
- 在linux上编译ffmpeg
- MAC OS X上编译ffmpeg
- mac上编译FFmpeg跑ios
- 在 Mac 上如何编译 bochs (Carbon)
- 在 Mac 上如何编译 bochs (X11)
- Qt程序如何在Mac上用X-code编译
- Qt程序如何在Mac上用X-code编译
- iOS FFMPEG 在MAC下的编译
- 在mac 下编译 安装 ffmpeg
- ffmpeg 在mac os x 上的编译 及 Xcode项目中的运用
- 观后感 --《当幸福来敲门》和《赢在中国》
- 【FAQ】如何根据commit id找到对应节点所属的分支和标签?
- MPMoviePlayerViewController播放网络视频bug
- hadoop启动dfs的warn问题解决
- git alias 命令简写 缩写 别名 懒人必备
- 如何在MAC上编译FFMpeg
- UIView与CALayer的区别,很详细
- 存储过程基本语法及实例
- 职业精神大讲堂(观影会)观后感
- Word Break
- 海明校验码
- 高质量c++(有了malloc/free 为什么还要new/delete )
- Java多线程[4]:线程间通信
- android 获取应用包名并启动