购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

前言

音视频开发是近年来的新兴软件开发行业,广泛运用于在线视频、网络直播、安防监控、远程办公、线上课堂等业务场景。特别是随着5G技术的深入应用和短视频自媒体的广泛传播,音视频领域的技术支持显得愈发重要。

在众多音视频开发技术框架中,FFmpeg是最基础的音视频处理平台。不论是音视频的编码、加工,还是传输,都离不开FFmpeg的支撑。可以说,入门音视频开发的第一个门槛就是FFmpeg,掌握FFmpeg是进军音视频开发的必经之路。

尽管FFmpeg在音视频领域拥有举足轻重的地位,但长期以来入门FFmpeg开发并非易事。一方面,音视频涉及的专业概念种类繁多,初学者容易困惑;另一方面,FFmpeg基于Linux环境的C语言开发,个人开发由于环境限制,难以深入FFmpeg编程。此外,FFmpeg作为底层框架本身并不提供可视化交互界面。例如,桌面程序需要Qt环境,而手机App需要Android环境,因此,在真正运用FFmpeg时,需要结合FFmpeg+Qt,或者FFmpeg+Android,这无疑增加了学习FFmpeg编程的难度。

基于以上考虑,本书按照下列章节结构来介绍FFmpeg开发实战。

第一,在解释音视频概念时,首先阐述相关术语的来龙去脉,然后描述这些概念的原理和分类,并最后提供对应的FFmpeg范例代码,使读者能够逐步理解音视频的基础知识,从理论到实践。

第二,详细说明在Linux环境编译FFmpeg及其相关库的步骤,同时也详述在Windows环境编译FFmpeg及其相关库的步骤,以便读者能够在个人计算机上搭建FFmpeg的开发学习环境。

第三,对于通过FFmpeg实现的每项功能,不仅提供基于函数调用的示例代码,还提供具体的FFmpeg操作命令,是本书兼具FFmpeg的代码开发教程与FFmpeg的命令使用手册两种用途。

第四,最后两章介绍了在Qt环境中集成FFmpeg并在计算机上运行播放影音的桌面程序,以及在Android Studio环境中集成FFmpeg并在手机上运行剪辑视频的手机App。这方便读者学以致用,能够迅速将FFmpeg编程应用到桌面开发与移动开发中。

第五,在介绍FFmpeg开发的过程中,引入了一些辅助工具用于编译、浏览、分析、加工等操作,包括Visual Studio、MSYS、CMake、VLC、YUView、Audacity、Subtitle Edit、MediaMTX等。本书对这些工具都进行详细介绍,以帮助读者熟练掌握FFmpeg开发技能。

全书共分为12章。其中,第1~5章是基础部分,主要讲解FFmpeg环境搭建、FFmpeg开发基础、FFmpeg的编解码、FFmpeg处理图像、FFmpeg处理音频;第6~10章是进阶部分,主要讲解FFmpeg加工视频、FFmpeg添加图文、FFmpeg自定义滤镜、FFmpeg混合音视频、FFmpeg播放音视频;第11和12章是平台应用部分,主要讲解FFmpeg的桌面开发和FFmpeg的移动开发。

本书在讲解FFmpeg知识点的同时给出了大量实战范例,方便读者迅速将所学的知识运用到音视频开发中。这些实战范例包括:图片转视频、拼接两段音频、老电影怀旧风、卡拉OK音乐短片、侧边模糊滤镜、翻书转场动画、同步播放音视频、桌面影音播放器、仿剪映的视频剪辑等。通过实战项目的练习,读者能够掌握音视频的基本开发技术,包括音视频查看、音视频转换、音视频播放、音视频剪辑、视频推拉流等。

所谓零基础,指的是FFmpeg零基础,而非C语言零基础,在读者开始学习本书之前,建议先学完谭浩强的《C程序设计》,且需要掌握基本的Linux操作命令。在学习第11章之前,建议先入门Qt平台的C++桌面编程。在学习第12章之前,建议先掌握Android平台的Java移动编程,可参考笔者的App开发专著《Android Studio开发实战:从零基础到App上线(第3版)》。

本书中与FFmpeg相关的C代码都是基于FFmpeg 5.1.2编写的。前10章的C/C++代码在Linux(包括EulerOS和CentOS)和Windows(包括Windows 10和Windows 11)上编译和调试通过;第11章的程序代码采用C++编写,并在Qt 6.5.2上编译和调试通过;第12章的App代码采用Java与C++编写,并在Android Studio Dolphin(小海豚版本)上编译和调试通过。

在学习音视频开发过程中,需要用到一些开源软件,逐个下载它们颇费功夫,而且部分软件还要搭配对应的FFmpeg版本。为了方便读者使用这些软件,笔者把本书用到的软件源码和安装文件统一打包,并与随书配套的例程源码和演示课件放在一起,读者可扫描下方的二维码一起下载。

如果你在下载过程中遇到问题,请发邮件至booksaga@126.com,邮件标题为“FFmpeg开发实战:从零基础到短视频上线”获得帮助。

最后,感谢王金柱编辑的热情指导,感谢出版社其他人员的辛勤工作,感谢我的家人一直以来的支持,感谢各位师长的谆谆教导。没有他们的鼎力相助,本书就无法顺利完成。

欧阳燊
2024年1月 uRWGUCoIbQwBvnhbo9VyGuUXQu2SxLpLgkrvVwHPLorzvdiZLDeo9x6CGBJY7Xci

点击中间区域
呼出菜单
上一章
目录
下一章
×