播放器開發(三):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 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文件,就不用每個模塊都導入一部分,左一個右一個的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168063.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu 22.04.3編譯AOSP13刷機

文章目錄 設備信息下載AOSP并切換分支獲取設備驅動編譯系統編譯遇到的問題Cannot allocate memoryUbuntu設置USB調試刷機參考鏈接 設備信息 手機:Pixel 4XL 下載AOSP并切換分支 在清華大學開源軟件鏡像站下載初始化包aosp-latest.tar。 解壓縮,切換到…

解決LocalDateTime傳輸前端為時間的數組

問題出現如下: 問題出現原因: 默認序列化情況下會使用SerializationFeature.WRITE_DATES_AS_TIMESTAMPS。使用這個解析時就會打印出數組。 解決方法: 我在全文搜索處理方法總結如下: 1.前端自定義函數來書寫 ,cols: [[ //表頭{…

[ubuntu]ubuntu上如何徹底卸載C++的opencv而不影響下次安裝使用

問題場景:我在ubuntu上安裝編譯了opencv3.4.4之后我又想安裝opencv4.5.0結果裝上后,opencv庫在系統目錄很混亂導致出現cmake項目出現很多錯誤。因此又想卸載掉opencv3.4.4重新安裝opencv4.5.0進去。但是如何卸載呢?我們知道opencv在系統里面有…

Go事件管理器:簡單實現

關注公眾號【愛發白日夢的后端】分享技術干貨、讀書筆記、開源項目、實戰經驗、高效開發工具等,您的關注將是我的更新動力! 在編程中,事件管理器是一種常見的工具,用于通過通知來觸發操作。在Go語言中,我們可以通過創建…

Langchain的Agents介紹

??覺得內容不錯的話,歡迎點贊收藏加關注😊😊😊,后續會繼續輸入更多優質內容?? 👉有問題歡迎大家加關注私戳或者評論(包括但不限于NLP算法相關,linux學習相關,讀研讀博…

Redis -- 介紹

1、NoSQL: 指的是非關系型數據庫,主要分成四大類:鍵值存儲數據庫、列存儲數據庫、文檔型數據庫、圖形數據庫。 2、什么是Redis: Redis是一種基于內存的數據庫,一般用于做緩存的中間件。 3、Redis的主要的特點: 1、Rd…

C++ 多線程鎖

目錄 1. mutex2. lock_guard3. unique_lock 是 lock_guard 的升級加強版4. condition_variable5. 調用 #include “thread” #include “mutex” #include “iostream” //! std::thread //! jion 阻塞式, .join()后面的代碼等待線程結束 //! detach 非阻塞式&#…

一、TIDB基礎

TIDB整個邏輯架構跟MYSQL類似,如下: TIDB集群:相當于MYSQL的數據庫服務器,區別是MYSQL數據庫服務器為單進程的,TIDB集群為分布式多進程的。 數據庫:同MYSQL數據庫,數據庫屬于集群,…

SSL握手失敗的解決方案

一、SSL握手失敗的原因: 1,證書過期:SSL證書有一個有效期限,如果證書過期,就會導致SSL握手失敗。 2,證書不被信任:如果網站的SSL證書不被瀏覽器或操作系統信任,也會導致SSL握手失敗…

線性代數的藝術

推薦一本日本網友Kenji Hiranabe寫的《線性代數的藝術》。這本書是基于MIT大牛Gilbert Strang教授的《每個人的線性代數》制作的。 雖然《線性代數的藝術》這本書僅僅只有12頁的內容,就把線性代數的重點全畫完了,清晰明了。 《線性代數的藝術》PDF版本&…

mysql 變量和配置詳解

MySQL 中還有一些特殊的全局變量,如 log_bin、tmpdir、version、datadir,在 MySQL 服務實例運行期間它們的值不能動態修改,也就是不能使用 SET 命令進行重新設置,這種變量稱為靜態變量。數據庫管理員可以使用前面提到的修改源代碼…

nodejs 將word轉為pdf office-to-pdf

jspdf用于html轉pdf。需借助html2canvas遍歷頁面中的dom節點,渲染成canvas image,再用jspdf把圖片轉為pdf。office-to-pdf 用于word轉pdf。依賴于libreOffice,需提前安裝 mac安裝libreOffice 1.首先需要jdk8,并配置環境變量 2.再就是需要安裝libreOf…

【Golang】使用泛型對數組進行去重

背景: 要求寫一個方法,返回去重后的數組。數組的類型可能是int64,也可能是string,或是其他類型。 如果區分類型的話,每增加一個新的類型都需要重新寫一個方法。 示例代碼: //對int64數組進行去重 func DeD…

ErphpdownV16.21插件 安裝教程和插件下載

ErphpdownV16.21插件下載_新版本 上傳插件并解壓 登入后臺插件管理啟動ErphpdownV16.21插件即可 啟動后設置即可使用此版本為學習版插件 功能介紹: Erphpdown會員推廣下載專業版 經過完美測試運行于wordpress 3.x-6.x版本。后續會增加更多實用的功能。已針對此插件…

Vue中學習筆記-數據代理

文章目錄 前文提要數據代理的概念MVVM模型和Vue中的數據代理M,模型V,視圖VM,視圖模型 前文提要 本人僅做個人學習記錄,如有錯誤,請多包涵 數據代理的概念 使用一個對象代理對另一個對象中屬性的操作。 MVVM模型和Vu…

Windows IDEA Python開發環境安裝+爬蟲示例

文章目錄 Python下載安裝開發工具IDEA包管理安裝pip基本用法從 requirements.txt 安裝依賴 項目示例部署在 Linux 上安裝Python在 Linux 上創建虛擬環境:安裝依賴:運行你的爬蟲 Python下載安裝 Python 安裝包下載地址:https://www.python.or…

Oracle登錄認證方式詳解

文章目錄 一、簡介二、OS認證三、口令認證四、remote_login_passwordfile 詳解 一、簡介 在數據庫管理中,登錄認證是確保數據庫安全性的重要環節。Oracle數據庫提供 了兩種認證方式,一種是“操作系統認證”,一種是“口令文件認證&#xff0c…

智安網絡|如何最大限度地提高企業網絡安全水平

在當今數字化時代,企業面臨著日益復雜和智能化的網絡威脅。為了保護企業的機密信息和客戶數據,漏洞掃描成為了一個至關重要的安全措施。然而,對于企業來說,他們最關心的是什么問題呢? 一、漏洞的發現和修復 在網絡安全…

路徑規劃之Best-First Search算法

系列文章目錄 路徑規劃之Dijkstra算法 路徑規劃之Best-First Search算法 路徑規劃之Best-First Search算法 系列文章目錄前言一、Best-First Search算法1.1 起源1.2 過程 三、簡單使用 前言 Best-First Search算法和Dijkstra算法類似,都屬于BFS的擴展或改進 一、…

Nginx 服務器 SSL 證書安裝部署

操作場景 本文檔以證書名稱 menglinfeng.top 為例。 Nginx 版本以 nginx/1.18.0 為例。 當前服務器的操作系統為 CentOS 7,由于操作系統的版本不同,詳細操作步驟略有區別。 安裝 SSL 證書前,請您在 Nginx 服務器上開啟 “443” 端口&#xf…