当前位置: 首页 > article >正文

播放器开发(三):FFmpeg与SDL环境配置

学习课题:逐步构建开发播放器【QT5 + FFmpeg6 + SDL2】

环境配置

我这边的是使用macOS;IDE用的是CLion;CMake构建,除了创建项目步骤、CMakeLists文件有区别之外的代码层面不会有太大区别。

配置上只添加一下CMakeLists中FFmpeg和SDL的配置就可以了


另外:我这边的系统是macOS系统,暂时提供的文件也是mac平台的,win平台可能不能直接用。

FFmpeg配置

include_directories(./ffmpeg6.0/include)
link_directories(./ffmpeg6.0/lib)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v -stdlib=libc++ -framework OpenGL -framework AppKit -framework Security -framework CoreFoundation -framework CoreVideo -framework CoreMedia -framework QuartzCore -framework CoreFoundation -framework VideoDecodeAcceleration -framework Cocoa -framework AudioToolbox -framework VideoToolbox -framework OpenCL ")

# for macos
# target_link_libraries 内添加libavformat.a libavcodec.a libavutil.a libswscale.a swresample liblzma.tbd libz.1.2.5.dylib libbz2.dylib libiconv.dylib

SDL配置

include_directories(./SDL2/include/SDL2)
link_directories(./SDL2/lib)

# target_link_libraries 内添加libSDL2.a

最终CmakeLists(根据自己系统环境进行修改)

cmake_minimum_required(VERSION 3.26)
project(SimplePlayer)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

include_directories("./")
set(CMAKE_PREFIX_PATH "/usr/local/Cellar/qt@5/5.15.10_1")

# ffmpeg path
include_directories(./ffmpeg6.0/include)
link_directories(./ffmpeg6.0/lib)
# sdl path
include_directories(./SDL2/include/SDL2)
link_directories(./SDL2/lib)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -v -stdlib=libc++ -framework OpenGL -framework AppKit -framework Security -framework CoreFoundation -framework CoreVideo -framework CoreMedia -framework QuartzCore -framework CoreFoundation -framework VideoDecodeAcceleration -framework Cocoa -framework AudioToolbox -framework VideoToolbox -framework OpenCL ")

find_package(Qt5 COMPONENTS
        Core
        Gui
        Widgets
        REQUIRED)

add_executable(SimplePlayer main.cpp)
target_link_libraries(SimplePlayer
        Qt5::Core
        Qt5::Gui
        Qt5::Widgets
        libavformat.a libavcodec.a libavutil.a libswscale.a
        swresample
        liblzma.tbd
        libz.1.2.5.dylib
        libbz2.dylib
        libiconv.dylib
        # sdl2
        libSDL2.a
)

导入方式

# FFmpeg

extern "C" {
#include "libavcodec/avcodec.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avassert.h"
#include "libavutil/ffversion.h"
#include "libavutil/frame.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/time.h"
#include "libswresample/swresample.h"
#include "libswscale/swscale.h"
#include "libavutil/audio_fifo.h"

}

# SDL2

#include "SDL.h"

可以单独放在一个xxxx.h文件中,统一导入这个.h文件,就不用每个模块都导入一部分,左一个右一个的。


http://www.kler.cn/a/147862.html

相关文章:

  • sql专题 之 where和join on
  • 【C++】string类(附题)
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-集成心知天气(二)
  • fastadmin多个表crud连表操作步骤
  • 论文翻译 | The Capacity for Moral Self-Correction in Large Language Models
  • 【算法一周目】双指针(2)
  • 村村通工程(Prim算法)/最小生成树Prim算法【数据结构】
  • Android : SQLite 增删改查—简单应用
  • F5社区学习心得分享:如何克服云迁移挑战?
  • C#文件流FileStream类
  • GEE教程——提取NASA NEX-GDDP 数据中的指定时间范围内的pr数据(含超限提示)
  • 聊聊VMware vSphere
  • C++不同平台下的RTTI实现
  • 云服务器:未来的计算力量
  • 如何解决中小制造业企业信息化难题?
  • Visual Studio(VS) C++程序LNK2005错误,提示“error LNK2005: _XXX已经在xxx.obj中定义”解决方案
  • Pangolin报错
  • 详解HTTP协议(介绍--版本--工作过程--Fiddler 抓包显示--请求响应讲解)
  • windows安装 evo
  • hadoop集群环境搭建和常用命令
  • 9.Spring 整合 Redis
  • Dockerfile讲解
  • HCIP-九、路由控制
  • Netty实现websocket且实现url传参的两种方式(源码分析)
  • 揭秘论文开题报告写作技巧,全程无忧,附赠技术路线图模板!
  • 解决electron-build打包后运行app报错:cannot find module xxx