海南建设局网站,昆山小程序制作,网站建设公司如何开拓客户,企业网站开发douyanet学习课题#xff1a;逐步构建开发播放器【QT5 FFmpeg6 SDL2】
环境配置 我这边的是使用macOS#xff1b;IDE用的是CLion#xff1b;CMake构建#xff0c;除了创建项目步骤、CMakeLists文件有区别之外的代码层面不会有太大区别。 配置上只添加一下CMakeLists中FFmpeg和SD…学习课题逐步构建开发播放器【QT5 FFmpeg6 SDL2】
环境配置 我这边的是使用macOSIDE用的是CLionCMake构建除了创建项目步骤、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 -stdliblibc -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.dylibSDL配置
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/qt5/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 -stdliblibc -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 COMPONENTSCoreGuiWidgetsREQUIRED)add_executable(SimplePlayer main.cpp)
target_link_libraries(SimplePlayerQt5::CoreQt5::GuiQt5::Widgetslibavformat.a libavcodec.a libavutil.a libswscale.aswresampleliblzma.tbdlibz.1.2.5.dyliblibbz2.dyliblibiconv.dylib# sdl2libSDL2.a
)
导入方式
# FFmpegextern 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文件就不用每个模块都导入一部分左一个右一个的。