圖文詳解Mac OS搭建音視頻開(kāi)發(fā)環(huán)境

1

FFmpeg

FFmpeg 是一個(gè)免費(fèi)、開(kāi)源且跨平臺(tái)的音視頻處理工具套件,它提供了豐富的功能和命令行接口,用于在音視頻領(lǐng)域進(jìn)行編解碼肾筐、轉(zhuǎn)碼畜伐、剪輯、過(guò)濾等操作燎猛。它由 Fabrice Bellard 創(chuàng)建,并于 2000 年首次發(fā)布照皆,是一個(gè)功能強(qiáng)大且廣泛應(yīng)用的音視頻處理工具重绷,適用于各種音視頻處理需求和應(yīng)用場(chǎng)景。無(wú)論是簡(jiǎn)單的格式轉(zhuǎn)換還是復(fù)雜的流處理膜毁,F(xiàn)Fmpeg 都提供了豐富的功能和工具昭卓,是音視頻開(kāi)發(fā)和處理的重要工具之一愤钾。

1.1

功能與特點(diǎn)

FFmpeg 提供了強(qiáng)大而靈活的命令行接口,用戶可以使用命令行參數(shù)來(lái)指定輸入文件候醒、輸出文件能颁、編解碼器、濾鏡和其他參數(shù)倒淫。同時(shí)伙菊,F(xiàn)Fmpeg 也提供了一些編程接口,如 libavcodec敌土、libavformat 等镜硕,使得開(kāi)發(fā)人員可以通過(guò)編程方式使用 FFmpeg 的功能。

  • 支持廣泛的音視頻格式:FFmpeg 支持幾乎所有常見(jiàn)的音視頻格式返干,包括但不限于 MP4兴枯、AVI、MKV矩欠、FLV财剖、MP3、AAC 等癌淮。它可以進(jìn)行格式之間的轉(zhuǎn)換峰伙,使得用戶可以輕松地處理和轉(zhuǎn)碼不同格式的音視頻文件。

  • 強(qiáng)大的編解碼能力:FFmpeg 支持多種音視頻編解碼器该默,包括 H.264瞳氓、H.265、MPEG-4栓袖、VP9匣摘、AAC、MP3 等裹刮。這使得用戶可以對(duì)音視頻文件進(jìn)行解碼音榜、編碼和重新編碼,以滿足不同的需求和要求捧弃。

  • 實(shí)時(shí)流處理和轉(zhuǎn)碼:FFmpeg 可以處理實(shí)時(shí)音視頻流赠叼,包括網(wǎng)絡(luò)流、攝像頭捕獲违霞、屏幕錄制等嘴办。它能夠?qū)@些流進(jìn)行編碼、解碼买鸽、轉(zhuǎn)碼和傳輸涧郊,適用于實(shí)時(shí)流媒體、視頻會(huì)議等應(yīng)用場(chǎng)景眼五。

  • 視頻剪輯和處理:FFmpeg 提供了豐富的視頻處理功能妆艘,可以進(jìn)行剪輯彤灶、裁剪、旋轉(zhuǎn)批旺、調(diào)整大小幌陕、添加水印、調(diào)整亮度對(duì)比度等操作汽煮。這使得用戶可以對(duì)視頻進(jìn)行各種編輯和處理搏熄,滿足不同的需求和創(chuàng)意。

  • 音頻處理和混音:FFmpeg 可以進(jìn)行音頻的提取逗物、轉(zhuǎn)碼、混音瑟俭、音量調(diào)整等操作翎卓。用戶可以使用 FFmpeg 處理音頻文件,如剪輯音頻片段、轉(zhuǎn)換音頻格式、調(diào)整音頻質(zhì)量等钝侠。

  • 視頻濾鏡和特效:FFmpeg 提供了豐富的視頻濾鏡和特效俺猿,用于改變視頻的外觀和效果。用戶可以應(yīng)用濾鏡蜈出、添加文字、模糊、銳化矩肩、顏色調(diào)整等,以實(shí)現(xiàn)各種視覺(jué)效果肃续。

  • 跨平臺(tái)支持:FFmpeg 可在多個(gè)操作系統(tǒng)平臺(tái)上運(yùn)行黍檩,包括 Windows、macOS始锚、Linux 等刽酱。這使得開(kāi)發(fā)人員和用戶可以在不同的環(huán)境中使用和集成 FFmpeg。

1.2

安裝

可以通過(guò)官網(wǎng)下載頁(yè)面下載對(duì)應(yīng)的安裝包安裝瞧捌,也可以利用 Homebrew 工具通過(guò)終端安裝:

brew install ffmpeg

安裝完畢后棵里,可以查看版本信息檢查是否安裝成功:

ffmpeg -version

若安裝成功會(huì)得到如下類似信息:

ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
built with Apple clang version 14.0.0 (clang-1400.0.29.202)

1.3

目錄結(jié)構(gòu)

可以通過(guò)電腦 Finder->Go->Go to Folder 輸入目錄:/usr/local/Cellar/ffmpeg,進(jìn)入目錄中姐呐。


01.1.png

2

Qt

Qt (/?kju?t/殿怜,發(fā)音同“cute”)是一個(gè)跨平臺(tái)的 C++應(yīng)用程序開(kāi)發(fā)框架,廣泛用于開(kāi)發(fā)圖形界面應(yīng)用程序曙砂、嵌入式系統(tǒng)和移動(dòng)應(yīng)用等稳捆。它由 Qt 公司(前身為 Nokia)開(kāi)發(fā)并維護(hù),具有豐富的功能和工具麦轰,被廣泛應(yīng)用于多個(gè)行業(yè)和領(lǐng)域乔夯。

2.1

功能與特點(diǎn)

下面是 Qt 框架的一些主要特點(diǎn)和功能:

  • 跨平臺(tái)支持:Qt 提供了很好的跨平臺(tái)支持砖织,可以在多個(gè)操作系統(tǒng)上運(yùn)行,包括 Windows末荐、macOS侧纯、Linux、Android 和 iOS 等甲脏。開(kāi)發(fā)者可以使用同一套代碼在不同平臺(tái)上構(gòu)建應(yīng)用程序眶熬,減少了開(kāi)發(fā)和維護(hù)的工作量。

  • 組件庫(kù)和界面設(shè)計(jì):Qt 提供了豐富的組件庫(kù)和工具块请,可以輕松創(chuàng)建現(xiàn)代化和吸引人的圖形界面娜氏。它包括各種預(yù)定義的控件(如按鈕、文本框墩新、表格等)贸弥,以及支持主題和樣式定制的機(jī)制,使得開(kāi)發(fā)者可以根據(jù)需求定制應(yīng)用程序的外觀和交互方式海渊。

  • 信號(hào)與槽機(jī)制:Qt 引入了信號(hào)與槽機(jī)制绵疲,通過(guò)信號(hào)和槽的連接,實(shí)現(xiàn)了組件之間的事件通信和交互臣疑。這種機(jī)制使得開(kāi)發(fā)者可以輕松地實(shí)現(xiàn)模塊化和松耦合的設(shè)計(jì)盔憨,提高了代碼的可讀性和可維護(hù)性。

  • 數(shù)據(jù)庫(kù)支持:Qt 提供了數(shù)據(jù)庫(kù)訪問(wèn)模塊讯沈,支持多種數(shù)據(jù)庫(kù)系統(tǒng)郁岩,如 MySQL、SQLite缺狠、PostgreSQL 等驯用。開(kāi)發(fā)者可以使用這些模塊進(jìn)行數(shù)據(jù)庫(kù)連接、查詢和操作儒老,方便地處理應(yīng)用程序的數(shù)據(jù)存儲(chǔ)和管理蝴乔。

  • 多媒體和圖形處理:Qt 提供了多媒體模塊,包括對(duì)音頻驮樊、視頻和圖像的處理和播放功能薇正。開(kāi)發(fā)者可以使用這些模塊實(shí)現(xiàn)音視頻播放、圖像處理囚衔、圖形繪制等功能挖腰,為應(yīng)用程序增加豐富的多媒體體驗(yàn)。

  • 網(wǎng)絡(luò)和通信:Qt 提供了網(wǎng)絡(luò)模塊练湿,支持 TCP/IP 和 UDP 等網(wǎng)絡(luò)通信協(xié)議猴仑。開(kāi)發(fā)者可以使用這些模塊進(jìn)行網(wǎng)絡(luò)編程,實(shí)現(xiàn)網(wǎng)絡(luò)通信、數(shù)據(jù)傳輸和遠(yuǎn)程訪問(wèn)等功能辽俗。

  • 多線程支持:Qt 提供了多線程編程的支持疾渣,包括線程管理、線程同步和并發(fā)編程等功能崖飘。開(kāi)發(fā)者可以使用這些功能來(lái)實(shí)現(xiàn)并發(fā)處理榴捡、任務(wù)分配和資源管理,提高應(yīng)用程序的性能和響應(yīng)能力朱浴。

除了上述功能外吊圾,Qt 還提供了許多其他模塊和工具,如 XML 處理翰蠢、國(guó)際化和本地化支持项乒、OpenGL 集成、Web 引擎等梁沧,以滿足不同應(yīng)用場(chǎng)景的需求檀何。

2.2

安裝

同樣的,可以直接去官網(wǎng)下載對(duì)應(yīng)平臺(tái)的安裝包進(jìn)行安裝趁尼,也可以通過(guò) brew 工具安裝:

brew install qt

安裝完畢后埃碱,會(huì)存于:/usr/local/Cellar/qt 目錄下猖辫,有類似如下信息:

You can add Homebrew's Qt to QtCreator's "Qt Versions" in:
  Preferences > Qt Versions > Link with Qt...
pressing "Choose..." and selecting as the Qt installation path:
  /usr/local

安裝 Qt Creator(IDE)

brew install --cask qt-creator

安裝成功酥泞,存放于:/usr/local/Caskroom/qt-creator

==> Installing Cask qt-creator
==> Moving App 'Qt Creator.app' to '/Applications/Qt Creator.app'
??  qt-creator was successfully installed!

2.3

配置

打開(kāi) Qt Creator 應(yīng)用程序,在其偏好設(shè)置里配置 Qt 路徑


01.3.png

根據(jù)前文可知啃憎,Qt 的路徑在/usr/local/Cellar/qt芝囤,使用快捷鍵 Command + Shift + G 手動(dòng)輸入這個(gè)文件夾,然后選擇 qt/6.5.2/bin/qmake辛萍,點(diǎn)擊 Open


01.4.png

點(diǎn)擊 OK

01.5.png

2.4

設(shè)置默認(rèn) kits

依舊選擇 Qt 應(yīng)用程序的偏好設(shè)置悯姊,選中 kits,選擇對(duì)應(yīng)機(jī)器的 kit(終端輸入如下命令可以知曉自己電腦多少位:uname -a)


01.6.png

滑動(dòng)到最底部贩毕,選擇 Qt 版本悯许,然后點(diǎn)擊 OK


01.7.png

3

第一 Qt 程序

3.1

創(chuàng)建項(xiàng)目

打開(kāi) Qt,F(xiàn)ile->New Project辉阶,或者快捷鍵:shift+command+N先壕。選擇 Qt Widgets Application

01.8.png

輸入完項(xiàng)目名字,選擇存放代碼的目錄

01.9.png

選 Build System


01.10.png

輸入詳細(xì)信息

01.11.png

勾選上 Generate form 的話會(huì)創(chuàng)建一個(gè)默認(rèn)的 mainwindow.ui 文件谆甜。有點(diǎn)類似 iOS 開(kāi)發(fā)中的 xib垃僚,可以直接拖放 UI 控件。

選 kits

01.12.png

項(xiàng)目創(chuàng)建完成

01.13.png

項(xiàng)目結(jié)構(gòu)如下

01.16.png
  • .pro 文件规辱,項(xiàng)目配置文件

  • Headers 文件夾谆棺,存放頭文件

  • Source 文件夾,存放代碼之類的罕袋,如.cpp 文件

  • Formse 文件夾改淑,存放 UI 文件

//main.cpp
#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

運(yùn)行項(xiàng)目

01.14.png

3.2

集成 FFmpeg

修改.pro 文件碍岔,在文件中添加如下配置信息

# 設(shè)置頭文件路徑
INCLUDEPATH += /usr/local/Cellar/ffmpeg/6.0_1/include

# 設(shè)置庫(kù)文件路徑
LIBS += -L/usr/local/Cellar/ffmpeg/6.0_1/lib \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale \
        -lswresample
01.15.png

測(cè)試是否集成成功,在 main.cpp 添加幾行代碼溅固,嘗試打印 libavcodec.a 庫(kù)文件的版本信息

#include "mainwindow.h"

#include <QApplication>

#include <QDebug>

extern "C" {
#include <libavcodec/avcodec.h>
}

int main(int argc, char *argv[])
{
    qDebug() << av_version_info();

    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

項(xiàng)目地址付秕,代碼及學(xué)習(xí)筆記可參考。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侍郭,一起剝皮案震驚了整個(gè)濱河市询吴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌亮元,老刑警劉巖猛计,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爆捞,居然都是意外死亡奉瘤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)煮甥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盗温,“玉大人,你說(shuō)我怎么就攤上這事成肘÷艟郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵双霍,是天一觀的道長(zhǎng)砚偶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)洒闸,這世上最難降的妖魔是什么染坯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮丘逸,結(jié)果婚禮上单鹿,老公的妹妹穿的比我還像新娘。我一直安慰自己深纲,他們只是感情好仲锄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著囤萤,像睡著了一般昼窗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涛舍,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天澄惊,我揣著相機(jī)與錄音,去河邊找鬼。 笑死掸驱,一個(gè)胖子當(dāng)著我的面吹牛肛搬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毕贼,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼温赔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鬼癣?” 一聲冷哼從身側(cè)響起陶贼,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤待秃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后章郁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暖庄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年聊替,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惹悄。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡医舆,死狀恐怖俘侠,靈堂內(nèi)的尸體忽然破棺而出象缀,到底是詐尸還是另有隱情蔬将,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布霞怀,位于F島的核電站莉给,受9級(jí)特大地震影響毙石,放射性物質(zhì)發(fā)生泄漏颓遏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一滤灯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳞骤,春花似錦、人聲如沸豫尽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榴嗅。三九已至,卻和暖如春录肯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背论咏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工厅贪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蠢护,地道東北人养涮。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像懈凹,于是被迫代替她去往敵國(guó)和親悄谐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子介评,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容