# FFmpegDemo **Repository Path**: pengyoucongcode/FFmpegDemo ## Basic Information - **Project Name**: FFmpegDemo - **Description**: 学习使用 FFMPEG 库的示例项目 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-10 - **Last Updated**: 2024-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 关于 FFMpegDemo ## 一、项目说明 本项目为 C/C++ 音视频开发初级项目,项目基于 FFMpeg 库提供的音视频编解码相关 API,进行相关功能的实现,每种功能的实现主要依托公共方法为载体, 从而构不成完整的体系工程,因此,本项目适用于具有 C/C++ 编程能力,但对音视频开发尚未形成深厚功力的开发者群体,如果,你是希望找一个具有体系化的、开箱即用的音视频应用, 那么,本项目无法满足你的需求,然而,如果你是想找一些 FFMpeg 库的基本用法和简单案例,那么,本项目或许会对你有所帮助。 ## 二、环境说明 本项目使用 CMake 进行代码管理,基于 MacOS 平台开发,因此,如果你克隆本项目时,所使用的系统环境为 Windows 或 Linux,那么,你将需要进行环境的切换,反之,如果你使用的系统就是 MacOS,切确来说是 `MacOS 15.0.1`, 那么你可以直接跳过环境搭建步骤。 运行本项目的系统环境,应当具备以下工具或组件: - CMake 工具 - g++ 编译器 - FFMpeg 库 下面重点说明 FFMpeg 库的安装: ### 安装 FFMpeg 库 在 MacOS 系统中,FFMpeg 库的安装非常简单,直接通过 brew 进行安装即可: ```shell brew install ffmpeg ``` 安装完成后,在终端中输入 `ffmpeg -version`,即可看到如下信息: ```shell ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers built with Apple clang version 16.0.0 (clang-1600.0.26.4) configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon libavutil 59. 39.100 / 59. 39.100 libavcodec 61. 19.100 / 61. 19.100 libavformat 61. 7.100 / 61. 7.100 libavdevice 61. 3.100 / 61. 3.100 libavfilter 10. 4.100 / 10. 4.100 libswscale 8. 3.100 / 8. 3.100 libswresample 5. 3.100 / 5. 3.100 libpostproc 58. 3.100 / 58. 3.100 ``` 而如果是 Windows 系统,那么,需要先前往[官网](https://www.gyan.dev/ffmpeg/builds/#release-builds) 下载相应的 **release-full-share**压缩包,再将压缩包解压到合适位置中, 并将 ffmpeg 的可执行文件所在路径,配置系统环境变量 Path 当中。 ## 三、项目结构 项目结构如下图所示: ```text FFMpegDemo |- LICENSE |- .gitignore |- CMakeLists.txt |- README.md |- main.cpp |- src |- include |- lib |- resources |- docs ``` - `CMakeLists.txt`:项目构建文件,用于构建项目,构建文件由 CMake 进行解析,因此,在构建文件里,我们主要使用 CMake 提供的 API,来完成项目的构建。 - `main.cpp`:项目主函数,用于启动项目执行相关功能案例。 - `src`:项目源代码目录,存放项目源代码文件。 - `include`:项目头文件目录,存放 FFMpeg 库的头文件。 - `lib`:项目静态库文件目录,存放 FFMpeg 库的静态库文件。 - `resources`:项目资源文件目录,存放项目所需要的资源文件,例如:图片、音频、视频等。 - `docs`:项目文档目录,存放项目使用说明文档,记录 FFMpeg 库的使用等相关技术文档。 ## 四、FFMpeg 快速开始 如何快速编写一个简单的功能案例,来验证自己所安装的 FFmpeg 库是否可用,可以参考[快速开始](./docs/quick_start.md)文档, 该文档会详细地介绍,如何在将 FFmpeg 库集成到项目中,并会着重分析 FFMpeg 库的第一个使用案例,从而帮助你快速了解使用 FFmpeg 库的基本流程。 ## 五、深入学习 FFmpeg 库 ### 1、[系统性认识FFmpeg库](docs/系统性认识FFmpeg.md) ### 2、[FFmpeg视频编解码](docs/FFmpeg视频编解码.md) ### 3、[FFmpeg视频取帧](docs/FFmpeg视频取帧.md) ### 4、[FFmpeg滤镜](docs/滤镜.md)