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

news/2024/6/3 18:08:05 标签: ffmpeg, c++, qt, 音视频

学习课题:逐步构建开发播放器【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.niftyadmin.cn/n/5211908.html

相关文章

PYTHON从文本中查找并同时删除相邻二行的特定文字

PYTHON从文本中查找并同时删除相邻二行的特定文字 例如同时删除上下行文字: python Copy code def remove__code(input_file, output_file):with open(input_file, r, encodingutf-8) as file:lines file.readlines()with open(output_file, w, encodingutf-8) as…

springsecurity5.7.x和springsecurity6.x配置文件对比

springsecurity5和springsecurity6如何要实现多种登录方式,自定义登录方式都是一样的操作步骤,主要有四个步骤。 一、自定义登录用户实体实现springsecurity中的UserDetails接口 二、自定义登录用户实现类实现springsecurity中的UserDetailsService接口 …

播放器开发(二):了解FFmpeg与SDL常用对象和函数

学习课题:逐步构建开发播放器【QT5 FFmpeg6 SDL2】 前言 这一篇内容就是简单的了解一遍一些常用的函数名称和作用,混个眼熟。 能看源码的就去看源码!!! 能看源码的就去看源码!!! …

Python与设计模式--建造者模式

3-Python与设计模式–建造者模式 一、快餐点餐系统 今天的例子,还是上一次谈到的快餐点餐系统。只不过,今天我们从订单的角度来构造这个系统。 最先还是有请上次的主角们: 主餐: class Burger():name""price0.0def g…

Flink-简介与基础

Flink-简介与基础 一、Flink起源二、Flink数据处理模式1.批处理2.流处理3.Flink流批一体处理 三、Flink架构1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink应用程序五、Flink高级特性1.时间流(Time)和窗口(Window&#xff0…

软著项目推荐 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

项目管理体系文件代码评审规范

代码评审的目的: 1、在项目早期就能够发现代码中的BUG 2、帮助初级开发人员学习高级开发人员的经验,达到知识共享 3、避免开发人员犯一些很常见,很普通的错误 4、保证项目组人员的良好沟通 5、项目或产品的代码更容易维护 软件开发全文档获取…

rk3588配置uac功能,android13使能uac及adb的复合设备

最近,因新增需求需要在现有产品上增加UAC的功能,查阅并学习相关知识后,在rk3588 SOC硬件平台搭载android13系统平台上成功配置了uac及uac&adb的复合设备。基于开源共享精神希望给大家提供些参考。 1.技术可行性预研 (1&#…