图文详解Mac OS搭建音视频开发环境

1

FFmpeg

FFmpeg 是一个免费、开源且跨平台的音视频处理工具套件,它提供了丰富的功能和命令行接口,用于在音视频领域进行编解码、转码、剪辑、过滤等操作。它由 Fabrice Bellard 创建,并于 2000 年首次发布,是一个功能强大且广泛应用的音视频处理工具,适用于各种音视频处理需求和应用场景。无论是简单的格式转换还是复杂的流处理,FFmpeg 都提供了丰富的功能和工具,是音视频开发和处理的重要工具之一。

1.1

功能与特点

FFmpeg 提供了强大而灵活的命令行接口,用户可以使用命令行参数来指定输入文件、输出文件、编解码器、滤镜和其他参数。同时,FFmpeg 也提供了一些编程接口,如 libavcodec、libavformat 等,使得开发人员可以通过编程方式使用 FFmpeg 的功能。

支持广泛的音视频格式:FFmpeg 支持几乎所有常见的音视频格式,包括但不限于 MP4、AVI、MKV、FLV、MP3、AAC 等。它可以进行格式之间的转换,使得用户可以轻松地处理和转码不同格式的音视频文件。
强大的编解码能力:FFmpeg 支持多种音视频编解码器,包括 H.264、H.265、MPEG-4、VP9、AAC、MP3 等。这使得用户可以对音视频文件进行解码、编码和重新编码,以满足不同的需求和要求。
实时流处理和转码:FFmpeg 可以处理实时音视频流,包括网络流、摄像头捕获、屏幕录制等。它能够对这些流进行编码、解码、转码和传输,适用于实时流媒体、视频会议等应用场景。
视频剪辑和处理:FFmpeg 提供了丰富的视频处理功能,可以进行剪辑、裁剪、旋转、调整大小、添加水印、调整亮度对比度等操作。这使得用户可以对视频进行各种编辑和处理,满足不同的需求和创意。
音频处理和混音:FFmpeg 可以进行音频的提取、转码、混音、音量调整等操作。用户可以使用 FFmpeg 处理音频文件,如剪辑音频片段、转换音频格式、调整音频质量等。
视频滤镜和特效:FFmpeg 提供了丰富的视频滤镜和特效,用于改变视频的外观和效果。用户可以应用滤镜、添加文字、模糊、锐化、颜色调整等,以实现各种视觉效果。
跨平台支持:FFmpeg 可在多个操作系统平台上运行,包括 Windows、macOS、Linux 等。这使得开发人员和用户可以在不同的环境中使用和集成 FFmpeg。

1.2

安装

可以通过官网下载页面下载对应的安装包安装,也可以利用 Homebrew 工具通过终端安装:

brew install ffmpeg

安装完毕后,可以查看版本信息检查是否安装成功:

ffmpeg -version

若安装成功会得到如下类似信息:

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

目录结构

可以通过电脑 Finder->Go->Go to Folder 输入目录:/usr/local/Cellar/ffmpeg,进入目录中。

图片

2

Qt

Qt (/ˈkjuːt/,发音同“cute”)是一个跨平台的 C++应用程序开发框架,广泛用于开发图形界面应用程序、嵌入式系统和移动应用等。它由 Qt 公司(前身为 Nokia)开发并维护,具有丰富的功能和工具,被广泛应用于多个行业和领域。

2.1

功能与特点

下面是 Qt 框架的一些主要特点和功能:

跨平台支持:Qt 提供了很好的跨平台支持,可以在多个操作系统上运行,包括 Windows、macOS、Linux、Android 和 iOS 等。开发者可以使用同一套代码在不同平台上构建应用程序,减少了开发和维护的工作量。
组件库和界面设计:Qt 提供了丰富的组件库和工具,可以轻松创建现代化和吸引人的图形界面。它包括各种预定义的控件(如按钮、文本框、表格等),以及支持主题和样式定制的机制,使得开发者可以根据需求定制应用程序的外观和交互方式。
信号与槽机制:Qt 引入了信号与槽机制,通过信号和槽的连接,实现了组件之间的事件通信和交互。这种机制使得开发者可以轻松地实现模块化和松耦合的设计,提高了代码的可读性和可维护性。
数据库支持:Qt 提供了数据库访问模块,支持多种数据库系统,如 MySQL、SQLite、PostgreSQL 等。开发者可以使用这些模块进行数据库连接、查询和操作,方便地处理应用程序的数据存储和管理。
多媒体和图形处理:Qt 提供了多媒体模块,包括对音频、视频和图像的处理和播放功能。开发者可以使用这些模块实现音视频播放、图像处理、图形绘制等功能,为应用程序增加丰富的多媒体体验。
网络和通信:Qt 提供了网络模块,支持 TCP/IP 和 UDP 等网络通信协议。开发者可以使用这些模块进行网络编程,实现网络通信、数据传输和远程访问等功能。
多线程支持:Qt 提供了多线程编程的支持,包括线程管理、线程同步和并发编程等功能。开发者可以使用这些功能来实现并发处理、任务分配和资源管理,提高应用程序的性能和响应能力。

除了上述功能外,Qt 还提供了许多其他模块和工具,如 XML 处理、国际化和本地化支持、OpenGL 集成、Web 引擎等,以满足不同应用场景的需求。

2.2

安装

同样的,可以直接去官网下载对应平台的安装包进行安装,也可以通过 brew 工具安装:

brew install qt

安装完毕后,会存于:/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

配置

打开 Qt Creator 应用程序,在其偏好设置里配置 Qt 路径

图片

根据前文可知,Qt 的路径在/usr/local/Cellar/qt,使用快捷键 Command + Shift + G 手动输入这个文件夹,然后选择 qt/6.5.2/bin/qmake,点击 Open

图片

点击 OK

图片

2.4

设置默认 kits

依旧选择 Qt 应用程序的偏好设置,选中 kits,选择对应机器的 kit(终端输入如下命令可以知晓自己电脑多少位:uname -a)

图片

滑动到最底部,选择 Qt 版本,然后点击 OK

图片

3

第一 Qt 程序

3.1

创建项目

打开 Qt,File->New Project,或者快捷键:shift+command+N。选择 Qt Widgets Application

图片

输入完项目名字,选择存放代码的目录

01.9.png

选 Build System

图片

输入详细信息

图片

勾选上 Generate form 的话会创建一个默认的 mainwindow.ui 文件。有点类似 iOS 开发中的 xib,可以直接拖放 UI 控件。

选 kits

图片

项目创建完成

图片

项目结构如下

图片

  • .pro 文件,项目配置文件

  • 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;
}

运行项目

图片

3.2

集成 FFmpeg

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

# 设置头文件路径
INCLUDEPATH += /usr/local/Cellar/ffmpeg/6.0_1/include

# 设置库文件路径
LIBS += -L/usr/local/Cellar/ffmpeg/6.0_1/lib \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale \
        -lswresample

图片

测试是否集成成功,在 main.cpp 添加几行代码,尝试打印 libavcodec.a 库文件的版本信息

#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();
}

项目地址,代码及学习笔记可参考。

本文使用 文章同步助手 同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值