如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器
原文地址:http://www.dranger.com/ffmpeg/
FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。
唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。
在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。
在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。
这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。
更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@gmail.com,讨论关于程序问题、疑问、注释、思路、特性等任何的问题。
分享到:
相关推荐
赠送原API文档:ffmpeg-4.3.2-1.5.5-javadoc.jar; 赠送源代码:ffmpeg-4.3.2-1.5.5-sources.jar; 赠送Maven依赖信息文件:ffmpeg-4.3.2-1.5.5.pom; 包含翻译后的API文档:ffmpeg-4.3.2-1.5.5-javadoc-API文档-...
赠送原API文档:ffmpeg-4.3.2-1.5.5-javadoc.jar; 赠送源代码:ffmpeg-4.3.2-1.5.5-sources.jar; 赠送Maven依赖信息文件:ffmpeg-4.3.2-1.5.5.pom; 包含翻译后的API文档:ffmpeg-4.3.2-1.5.5-javadoc-API文档-...
赠送原API文档:ffmpeg-5.0-1.5.7-javadoc.jar; 赠送源代码:ffmpeg-5.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:ffmpeg-5.0-1.5.7.pom; 包含翻译后的API文档:ffmpeg-5.0-1.5.7-javadoc-API文档-中文(简体)-...
赠送原API文档:ffmpeg-5.0-1.5.7-javadoc.jar; 赠送源代码:ffmpeg-5.0-1.5.7-sources.jar; 赠送Maven依赖信息文件:ffmpeg-5.0-1.5.7.pom; 包含翻译后的API文档:ffmpeg-5.0-1.5.7-javadoc-API文档-中文(简体)...
这个文档中文翻译是针对那些希望深入理解和使用 FFmpeg 的开发者和爱好者,特别是对于中文使用者来说,这是一个宝贵的资源。 在FFmpeg的开发过程中,理解和掌握以下几个关键知识点至关重要: 1. **FFmpeg 命令行...
本手册基于FFmpeg的官方文档进行了中文翻译,旨在帮助中国用户更好地理解和使用这个工具。 1. FFmpeg基本概念: - FFmpeg由多个组件构成,包括ffmpeg命令行工具、libavcodec编码库、libavformat解封装库、...
FFmpeg中文文档是一份详细的指南,涵盖了FFmpeg工具的各个方面,包括命令语法、编码解码、滤镜应用等关键知识点。FFmpeg是一个强大的开源工具集,用于处理音视频数据,支持各种格式的转换、捕获和流媒体操作。 1. *...
FFmpeg 是一个强大的开源工具,用于处理多媒体文件,包括音频和视频。在视频处理领域,FFmpeg 提供了丰富的功能...如果遇到问题,可以查阅 `使用说明-自己研究的方法` 文档或在线搜索 FFmpeg 的官方文档获取更多帮助。
英文文档(https://ffmpeg.org/ffmpeg-all.html): ffmpeg Documentation(ffmpeg.org ffmpeg-all.html).pdf 中文文档(https://ffmpeg.github.net.cn/ffmpeg-all.html): ffmpeg 文档_ FFmpeg中文网.pdf
本压缩包中的"FFmpeg Basic.pdf"是FFmpeg的官方基础文档,为用户提供了一份详细的使用指南。 FFmpeg的核心组件包括ffmpeg命令行工具、libavcodec编码库、libavformat封装库、libavfilter过滤器库以及libavutil通用...
ffmpeg.js 该库提供了使用将FFmpeg构建移植到JavaScript的功能。 生成针对浏览器内部使用进行了优化:最小的大小可加快加载速度,asm.js,性能调整等。尽管它们也可在Node中使用。 建物 当前可用的版本(将来可能会...
FFMPEG编译手册 FFMPEG是一款开源的音视频处理工具,具有强大的多媒体处理能力。下面是对FFMPEG编译手册的解读和知识点总结。 标题:FFMPEG编译手册 描述:主要是针对最新版的FFMPEG编译过程,并将h264功能加入...
FFmpeg 是一个强大的开源多媒体处理框架,用于处理音频、...总的来说,FFmpeg 是一个功能强大的多媒体处理库,其源码和相关工具文档对于开发者来说是宝贵的资源,通过深入学习和实践,可以提高在音视频领域的技术水平。
HTML 帮助文档是 FFmpeg 的官方文档,经过转换后,更适合在线浏览和查阅。以下是 FFmpeg HTML 帮助文档中涵盖的一些关键知识点: 1. **FFmpeg 命令行工具**:FFmpeg 包含一系列可执行文件,如 `ffmpeg`、`ffprobe` ...
OpenCV(开源计算机视觉库)是一个广泛应用于图像处理和计算机视觉领域的强大工具,它提供了丰富的函数和模块,方便...此外,OpenCV的文档和社区通常能提供详细的编译指导和解决方案,遇到问题时可以查阅相关资料。
FFmpeg 是一个强大的开源多媒体处理工具,用于处理音频、视频以及图像文件。它包含了多个组件,如 FFmpeg 命令行工具...阅读这些文档,结合实践操作,你将能够更好地掌握 FFmpeg,并利用它解决多媒体处理中的各种挑战。
2. FFmpeg文档:压缩包中包含的FFmpeg中文开发文档对于开发者来说极其宝贵,它详细阐述了FFmpeg的API用法、解码器的实现原理以及如何使用FFmpeg进行多媒体处理。这些文档可以帮助开发者理解FFmpeg的内部工作流程,...
- **滤镜系统**:FFmpeg 提供了丰富的滤镜,可以进行画面裁剪、缩放、颜色校正、转场效果等操作。 - **流处理**:FFmpeg 能够处理不同格式的输入和输出流,包括 RTMP、HTTP、FTP 等协议,支持直播和点播。 - **...
这份"ffmpeg中文说明文档"将帮助我们深入理解FFmpeg的内部运作机制以及如何在实际项目中有效利用它。 《ffdoc.pdf》可能是FFmpeg的官方文档中文版,这份文档通常会涵盖FFmpeg的基本概念、架构、命令行工具的使用,...
本文档旨在详细介绍FFmpeg的基本使用方法及其核心功能。 #### 二、基本命令结构 FFmpeg的基本命令结构如下: ```bash ffmpeg [global_options] {[input_file_options] -i INPUT_FILE} {[output_file_options] ...