字节笔记本
2026年3月22日
FFmpeg 开发者文档中文版
音视频开发是后端与客户端开发中技术壁垒较高的领域之一,而 FFmpeg 作为全球最流行的开源多媒体处理框架,几乎是每个音视频开发者必须掌握的核心工具。然而,FFmpeg 学习曲线陡峭,文档分散,初学者往往难以系统性地入门和进阶。ffmpeg_develop_doc 是一个由 0voice 团队维护的 GitHub 仓库,收录了全网优质的 FFmpeg 学习资料,涵盖开源项目、典藏文档、系列文章、面试题、教学视频以及学术论文,堪称 FFmpeg 学习的一站式资源库。
项目简介
ffmpeg_develop_doc 是一个面向音视频开发者的综合性资料整理仓库,由 0voice 团队发起并持续维护。仓库以中文为主,汇集了从入门到进阶的各类 FFmpeg 学习资源,所有资料来源于互联网,遵循"取之于互联网,用之于互联网"的理念。该项目目前在 GitHub 上获得了超过 2100 颗 Star,600 余次 Fork,是中文社区中最受欢迎的 FFmpeg 学习资料合集之一。
仓库内容按照类别进行了清晰的组织,共分为七大板块:开源项目、典藏文档、系列文章、面试题、教学视频、学术论文和资料下载。无论你是刚接触 FFmpeg 的初学者,还是准备音视频岗位面试的求职者,亦或是需要参考学术论文的研究者,都能在这里找到有价值的资料。
核心特性
全方位的资料覆盖
仓库最突出的特点是资料的全面性。从基础的环境搭建到高级的编解码原理,从命令行使用到 API 编程,从 Android/iOS 移动端开发到 Web 端播放器实现,几乎涵盖了 FFmpeg 开发的所有方向。
实战导向的开源项目集
收录了超过 25 个优质的 FFmpeg 相关开源项目,这些项目均可在本地调试运行,涵盖视频播放器、视频处理框架、直播推流等多个应用场景。例如 bilibili/ijkplayer(B站开源的播放器)、GSYVideoPlayer(功能丰富的视频播放器)、RxFFmpeg(Android 音视频处理框架)等,都是工业界广泛使用的项目。
系统化的学习文章
精心整理了从 FFmpeg 简介到核心模块分析的系列学习文章,共计 15 篇以上。文章按照由浅入深的顺序编排,包括 FFmpeg 的安装、API 介绍、编解码分析、结构体学习等核心主题,特别适合作为系统学习的路线图。
面试题大全
整理了 60 道音视频开发面试高频题目,覆盖视频编码原理、直播技术、流媒体协议、播放器优化等多个维度。这些题目不仅适合面试准备,也是检验自身知识体系完整度的重要参考。
学术论文集合
收录了近 30 篇基于 FFmpeg 相关技术的学术论文,涉及 H.264/H.265 编解码、RTMP/RTSP 协议、流媒体系统设计等研究方向,适合需要深入了解底层原理的开发者和研究者。
技术栈
该项目作为一个资料整理仓库,本身不涉及特定技术栈的代码开发,但其收录的资源覆盖了以下主要技术领域:
- FFmpeg 核心库:libavformat、libavcodec、libavfilter、libswscale、libavutil
- 编程语言:C/C++、Java、Python、Go、JavaScript
- 移动端开发:Android(NDK/JNI)、iOS(Objective-C/Swift)
- 前端技术:WebAssembly、Canvas、AudioContext
- 流媒体协议:RTMP、RTSP、HLS、WebRTC、HTTP-FLV
- 视频编码标准:H.264/AVC、H.265/HEVC
- 音频编码标准:AAC、PCM、MP3、AMR
- 相关框架:Qt、SDL、GStreamer、MediaCodec、VideoToolbox
- 跨平台方案:Flutter、React Native
安装指南
ffmpeg_develop_doc 是一个纯文档仓库,无需安装任何依赖。获取方式如下:
克隆仓库
git clone https://github.com/0voice/ffmpeg_develop_doc.git在线浏览
也可以直接通过 GitHub 页面在线浏览所有资料内容,无需本地克隆。
FFmpeg 本体安装
虽然文档仓库无需安装,但学习 FFmpeg 需要安装 FFmpeg 工具本身:
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
# CentOS/RHEL
sudo yum install ffmpeg
# Windows
# 从 https://ffmpeg.org/download.html 下载预编译版本快速开始
1. 浏览开源项目
从仓库的"开源项目"板块开始,选择一个你感兴趣的项目进行学习和调试。建议从以下入门级项目开始:
- mpv-player/mpv:命令行视频播放器,代码结构清晰,适合学习播放器基本架构
- mpenkov/ffmpeg-tutorial:FFmpeg 教程项目,手把手教你编写视频播放器
- HeZhang1994/video-audio-tools:基于 Python + FFmpeg 的视频音频处理工具,简单实用
2. 阅读学习文章
按照文章编号顺序,系统学习 FFmpeg 的核心概念:
- 先阅读 FFmpeg 简介系列(共 7 篇),了解整体架构
- 再阅读结构体学习系列(共 8 篇),深入理解核心数据结构
- 最后阅读进阶文章,掌握转码原理
3. 刷面试题
在掌握了基础知识后,通过 60 道面试题检验和巩固所学内容,重点理解以下高频考点:
- 视频编码原理(H.264 vs H.265)
- 流媒体协议(RTMP、HLS、RTSP 的区别)
- 音视频同步机制
- 播放器优化策略
- GOP、DTS/PTS 等核心概念
使用示例
示例一:视频转码
FFmpeg 最常用的功能之一是视频转码,将一种视频格式转换为另一种格式:
# 将 MP4 转换为 FLV
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f flv output.flv
# 将视频压缩到指定分辨率
ffmpeg -i input.mp4 -vf scale=1280:720 -c:v libx264 -crf 23 output.mp4示例二:视频裁剪与合并
# 裁剪视频(从第 10 秒开始,持续 30 秒)
ffmpeg -i input.mp4 -ss 10 -t 30 -c copy output.mp4
# 合并多个视频
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4示例三:添加水印
# 添加文字水印
ffmpeg -i input.mp4 -vf "drawtext=text='Hello':fontcolor=white:fontsize=24:x=10:y=10" output.mp4
# 添加图片水印
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4示例四:提取音频
# 从视频中提取音频
ffmpeg -i input.mp4 -vn -acodec copy output.aac
# 将视频转为 GIF 动图
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" -t 5 output.gif示例五:直播推流
# 推送本地视频到 RTMP 服务器
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://your-server/live/stream_key
# 使用摄像头推流
ffmpeg -f avfoundation -i "0" -vcodec libx264 -f flv rtmp://your-server/live/stream_key推荐学习路径
对于不同背景的开发者,建议采用以下学习路径:
路径一:零基础入门
- 安装 FFmpeg,熟悉命令行基本用法
- 阅读"FFmpeg 学习"系列文章(一至七)
- 动手实践视频转码、裁剪、合并等操作
- 阅读"FFmpeg 结构体学习"系列文章
路径二:移动端开发
- 学习 FFmpeg 基础知识
- 研究 ijkplayer 或 RxFFmpeg 的源码
- 尝试将 FFmpeg 移植到 Android/iOS 平台
- 实现一个简单的视频播放器
路径三:面试准备
- 系统学习 FFmpeg 核心知识
- 逐一攻克 60 道面试题
- 研究流媒体协议(RTMP、HLS、WebRTC)
- 了解直播和点播的技术架构
社区与贡献
该项目由 0voice 团队维护,欢迎社区开发者通过 Issues 或 Pull Requests 参与贡献。如果发现资料有版权问题,可以通过邮件联系项目维护者进行处理。项目还提供了"零领工作"服务,实时发布各主要城市的 C/C++ 和 Golang 方向招聘岗位信息,对音视频方向的求职者有额外的参考价值。
项目链接
- GitHub 仓库:https://github.com/0voice/ffmpeg_develop_doc
- 联系邮箱:wchao_isvip@163.com
- FFmpeg 官方网站:https://ffmpeg.org/