在ffmpeg目录下执行
./configure
(携带好需要的参数),输出的信息包含了会编译哪些可执行程序:
Programs:
ffmpeg ffprobe ffserver
复制代码
可以看到,并不包含ffplay。这是由于ffplay依赖sdl库,我本地环境没有,所以需要先安装sdl库。
在ffmpeg目录下执行
./configure -h
,输出的信息可以看到这么一行:
--disable-sdl2 disable sdl2 [autodetect]
复制代码
说明使用的是sdl2,并且如果当前环境有sdl2的话,会自动检测并使用。
这里我们选择源码安装sdl2:
$ wget https://www.libsdl.org/release/SDL2-2.0.12.tar.gz
$ cd SDL2-2.0.12/
$ ./configure
$ make && make install
复制代码
再次回到ffmpeg目录下执行
./configure
(携带好需要的参数),显示如下信息:
Programs:
ffmpeg ffplay ffprobe ffserver
复制代码
说明会包含ffplay了,执行make编译:
$make -j8
复制代码
编译完就可以看到生成好的ffplay等可执行文件了。尝试使用ffplay播放一个文件,一切正常。
最后,再贴一个macOS编译SDL1.2的方法,尽管我本次编译ffplay使用的SDL2,不需要SDL1.2,但是我在编译SDL1.2时也遇到了一些问题,把相关内容贴在这,留给需要的人。
实验环境: macOS Catalina 10.15.1
在
www.libsdl.org/download-1.…
这个网站找到源码下载地址。
下载SDL1.2.15,编译,安装:
$ wget https://www.libsdl.org/release/SDL-1.2.15.tar.gz
$ cd SDL-1.2.15/
$ ./configure
$ make && make install
复制代码
编译报错:
./include/SDL_syswm.h:58 :10 : fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
^~~~~~~~~~~~
1 error generated.
复制代码
缺少X11,直接下载dmg安装包文件,安装XQuertz,下载地址:
dl.bintray.com/xquartz/dow…
再次尝试编译SDL,输出如下信息:
./src /video /quartz/SDL_QuartzVideo.h :94 :5 : error: unknown type name 'CGDirectPaletteRef'
CGDirectPaletteRef palette;
复制代码
解决方法是把报错的那行代码注释掉。
再次尝试编译SDL,输出如下信息:
./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 )
复制代码
我们修改报错的代码,在register后面增加
_Xconst
,修改后如下:
SDL_X11_SYM (int ,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return )
复制代码
再次尝试编译SDL,编译通过。
本文完,作者
yoko
,尊重劳动人民成果,转载请注明原文出处:
pengrl.com/p/20043/
本篇文章由一文多发平台
ArtiPub
自动发布
Docker
FFmpeg
839
brzhang
ChatGPT
FFmpeg
OpenCV
1004
loongwind
Flutter
macOS
FFmpeg