没有合适的资源?快使用搜索试试~ 我知道了~
首页FFmpeg Tutorial.pdf(中文版)
FFMPEG 是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工 作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C 编写 的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的教程讲了它的基本原理另外还有一个使用doxygen 生 成的文档。这就是为什么当我决定研究FFMPEG 来弄清楚音视频应用程序是如何工作的过程中,我决定把这个 过程用文档的形式记录并且发布出来作为初学教程的原因。
资源详情
资源评论
资源推荐

How to Write a Video Player in Less Than 1000 Lines
An ffmpeg and SDL Tutorial
如何用 FFmpeg 编写一个简单播放器
中文版
Stephen Dranger 著
不详 译

前 言
教程英文原文由 Stephen Dranger
1
写成,并发布在 http://dranger.com/ffmpeg/ffmpeg.html ,中文版原始翻译出
处不详,本文档参考百度文库中的翻译版本及部分其它译本进行校正和重排。正如原文作者在教程开始部分指出
的,教程中有些内容已经过时了,教程提供的代码中使用的 API 有些已经被 FFmpeg 废弃了。不过好在有开发者
更新教程的代码
2
到比较新的 FFmpeg 版本
3
,因此文章作为开发者的入门教程还是很有参考价值。
本文档 LaTeX 源码和 PDF 文档发布在 Github:https://github.com/mengyingchina/FFmpeg-Tutorial-CN ,你可以
在这里获取最新更新,如果有发现文字或翻译错误,请提交到FFmpeg-Tutorial-CN/issues 。
原文的版权声明:
This work is licensed under the Creative Commons Attribution-Share Alike 2.5 License. To view a copy of this
license, visit http://creativecommons.org/licenses/by-sa/2.5/ or send a letter to Creative Commons, 543 Howard
Street, 5th Floor, San Francisco, California, 94105, USA.
Code examples are based off of FFplay, Copyright (c) 2003 Fabrice Bellard, and a tutorial by Martin Bohme.
1
dranger@gmail.com
2
https://github.com/chelyaev/ffmpeg-tutorial
3
ffmpeg version N-50314-gf6fff8e

目 录
教程 1 制作屏幕录像 3
1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 打开文件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 保存数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 读取数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
教程 2 输出到屏幕 13
1 SDL 和视频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 创建一个显示(Display) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 显示图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 绘制图像 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
教程 3 播放音频 19
1 音频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
i

目 录 ii
2 设置音频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 队列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 意外情况 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 为队列提供包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6 取出包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7 最后解码音频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
教程 4 创建线程 34
1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2 简化代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 我们的第一个线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 得到帧:video_thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 把帧队列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6 显示视频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
教程 5 同步视频 57
1 如何同步视频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2 PTS 和 DTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3 同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 编写代码:获得帧的时间戳 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5 编写代码:使用 PTS 来同步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6 同步:音频时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

目 录 iii
教程 6 同步音频 71
1 同步音频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
2 实现视频时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3 提取时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4 同步音频 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5 修正样本数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
教程 7 快进快退 80
1 处理快进快退(seek)命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2 清空我们的缓冲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
教程 8 软件缩放 87
1 软件缩放库 libswscale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
剩余95页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3