macOS编译ffmpeg中的播放器ffplay

李纹
• 阅读 2447

之前写过一篇关于编译ffmpeg的文章,地址: linux安装ffmpeg
本文在那篇基础上,讲怎么编译ffmpeg的播放器ffplay。

本次实验环境:

  • macOS Catalina 10.15.1
  • FFmpeg 3.4

在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

https://www.libsdl.org/downlo... 这个网站找到源码下载地址。

下载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,下载地址: https://dl.bintray.com/xquart...

再次尝试编译SDL,输出如下信息:

./src/video/quartz/SDL_QuartzVideo.h:94:5: error: unknown type name 'CGDirectPaletteRef'
    CGDirectPaletteRef palette;            /* palette of an 8-bit display */

解决方法是把报错的那行代码注释掉。

再次尝试编译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,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/20043/
本篇文章由一文多发平台ArtiPub自动发布

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Cmake opencv_videoio_ffmpeg.dll下载失败
用Cmake对OpenCV进行Configure,下载opencv\_videoio\_ffmpeg.dll和opencv\_videoio\_ffmpeg\_64.dll经常失败,解决方案是:到CMake中设置的Wheretobuildthebinaries的路径下去找名为CMakeDownloadLog.txt的文件,里面会有ffmpeg.dll
Wesley13 Wesley13
3年前
Linux 下完整安装ffmpeg(包括各种解码器)
FFmpeg是什么?FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。FFmpeg在Linux平
Stella981 Stella981
3年前
FFmpeg 学习(二):Mac下安装FFmpeg
一、安装ffmpeg分为两种安装方式:1\.命令行安装brewinstallffmpeg2\.下载压缩包安装去http://evermeet.cx/ffmpeg/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2
Wesley13 Wesley13
3年前
Ubuntu 下安装深度音乐播放器
网上搜了一个安装深度音乐的有问题。我自己又整理一个最新的2014版的深度音乐。Linux环境:Ubuntu14.04LTS64bit深度音乐都是DEB包安装。下面,介绍如何安装深度音乐播放器。需要pythondeepinutils、deepinui、gstreamer0.10ffmpeg、pythondeeping
Stella981 Stella981
3年前
FFmpeg + OpenGLES 实现视频解码播放和视频滤镜
该原创文章首发于微信公众号:字节流动FFmpeg开发系列连载:FFmpeg开发(01):FFmpeg编译和集成(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2F0792f6bbc9f6)FFmpeg开发(02):FFm
Stella981 Stella981
3年前
FFmpeg + OpenGL ES 实现 3D 全景播放器
!(https://oscimg.oschina.net/oscnet/d1020a46dbca480c8182261315bad94d.jpg"FFmpegOpenGLES实现3D全景播放器")FFmpegOpenGLES实现3D全景播放器FFmpeg开发系列连载:FFmpe
Stella981 Stella981
3年前
FFmpeg使用教程(一)
ffmpeg是一个开源的音视频转码工具,它提供了录制、转换以及流化音视频的完整解决方案,可以转码、压制、提取、截取、合并、录屏等。一、下载FFmpeg下载地址:http://ffmpeg.zeranoe.com/builds/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F
Stella981 Stella981
3年前
FFmpeg开发实战(二):FFmpeg 文件操作
FFmpeg提供了丰富的API供我们使用,下面我们来讲述一下文件操作相关的API:FFmpeg删除文件:avpriv\_io\_delete()FFmpeg重命名文件:avpriv\_io\_move()FFmpeg打开目录:avio\_open\_dir()FFmpeg读取目录:avio\_read\_d
Stella981 Stella981
3年前
FFMEPG 平台移植,接口简化和外部模块接入 (四)ffmpeg android移植(ffmpeg 视频编码)
FFMPEG视频编码最常见的H264,H265需要X264,X265外部模块支持,可以从我们开源平台的FFMPEG编译项目里面获取代码和配置进行一键式编译:https://github.com/Careyeteam/CareyeFFMPEG(https://www.oschina.net/action/GoToLink?urlhttps%3A
Wesley13 Wesley13
3年前
OSG3.4编译FFMPEG插件
0、加入你要读a.mp4,那个正确的写法是osg::Image\imageosgDB::readImageFile("a.mp4.ffmpeg");1、在github上下载最新的osg3.4源码https://github.com/openscenegraph/OpenSceneGraph/tree/OpenSceneGraph3.4,你会发
Stella981 Stella981
3年前
FFMEPG 平台移植,接口简化和外部模块接入 (一)ffmpeg android移植(ndk 编译)
CareyeFFMPEG项目是Careye开源平台的一个新项目,目的是在FFMPEG项目和其外部模块,如freetype,X264的基础上建立一个多平台编译,接口调用简单的工具集。本博客是一个连载,首先从android开始写吧。因为FFMPEG本身对android编译的支持就不是特别好。本文开发环境是ubuntu分步来做:1\.建立