ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

C++音视频开发从放弃到入门 (基于FFmpeg+OpenCV)

C++音视频开发从放弃到入门 (基于FFmpeg+OpenCV) 前言音视频开发一定要学C吗答案是肯定的。虽然其它语言也能从事音视频开发甚至使用起来更简单但“语言抽象层次越高对底层硬件的控制能力越弱”当你的功能需求日益增多程序的性能需求越来越迫切你想进一步了解程序实现的细节时使用其它语言往往会面临“无法解决”的困境最后不得不使用C来解决问题。以往C和C的学习成本要比其它语言高许多但现在借助AI辅助学习不同语言的学习成本已经不存在差距我们何不从一开始就使用C呢FFmpeg及OpenCV是开源、跨平台的音视频开发SDK从事音视频开发基本都需要用到它。因为C及C都是跨平台的开发语言因此基于C和C开发的FFmpegOpenCV应用代码只需做少量修改就可以从一个平台移植到另一个平台而无需担心性能有所下降如从PC移植到Android就是如此。下面的应用都是基于这个思想开发的开发的原则就是用最少的代码实现最核心的功能方便使用者二次开发方便跨平台移植。FFmpeg做音视频开发主要涉及的业务需求有推流、拉流、双向音视频交流如视频会议等推流从简单的推摄像头和麦克风到比较复杂的推桌面和混音拉流从简单的播mp4到比较复杂的播RTMP流或RTSP流等推拉混合从一对一音视频通讯到多对多音视频通讯等。由于C及C的跨平台特性基本可以实现 Write Once, Run Anywhere的理想。有了FFmpeg为什么还要加上OpenCV呢因为OpenCV有图像处理上的优势而且现在很多人工智能应用都与OpenCV息息相关将两者结合起来能生发出很多有实际意义的应用。开发工具可以使用VS2013因为它在老机器上也能跑的很好也可以使用VS017以上版本。界面用的MFC选择MFC的原因就是因为它快比其它任何一种UI框架都快而且我们的学习重点并不是在UI上。为了美化UI笔者试了很多UI框架总之该试的都试过了包括QT但就慢那么一点点就成为放弃的理由MFC自绘反而更容易上手。我们这里基本只关注核心功能的实现从VS移植到QT甚至Android的时候核心代码基本没太大改变。当然要做好这些开发也需要开发者打好基础FFmpeg的移植和高效稳定使用也需要开发者细心调试。由于作者水平有限书中的错误在所难免敬请各位读者批评指正。本书特色1. 实战导向全书以19个完整的实战项目为主线从环境配置到功能实现从播放端到推流端从桌面应用到移动端移植循序渐进地覆盖音视频开发的核心技术点。2. 代码精简每个示例都遵循最少代码实现核心功能的原则去除冗余的封装和抽象让读者专注于音视频技术本身便于理解和二次开发。3. 跨平台思想核心代码基于标准C编写可轻松移植到Windows、Linux、Android等多个平台真正实现Write Once, Run Anywhere的开发理念。4. 理论与实践结合每个章节都包含原理讲解、API详解和实现过程先理解为什么再掌握怎么做。读者对象本书适合以下读者阅读1. 音视频开发初学者希望系统学习FFmpeg和OpenCV的开发人员。2. C开发者希望拓展音视频开发技能的C程序员。3. 移动开发人员需要将音视频功能移植到Android平台的开发者。4. 计算机视觉爱好者希望结合音视频和图像处理的技术爱好者。5. 相关专业学生计算机、电子信息、通信工程等专业的本科生和研究生。学习路线本书按照播放→推流→扩展→视觉→移植的路线组织内容第1章播放端实现——打好基础掌握音视频解码和播放的核心流程。第2章推流端实现——逆向思维学习音视频编码和推送的完整过程。第3章桌面共享实现——进阶应用扩展音视频采集的来源。第4章OpenCV图像处理——跨界融合将计算机视觉引入音视频开发。第5章Android移植——平台迁移将PC端代码移植到移动平台。建议初学者按章节顺序阅读有经验的开发者可以根据需要选读相关章节。目录第1章 播放端的实现1.1 音视频基础概念1.2 配置FFmpegOpenCV开发环境1.3 使用FFmpeg读取RTMP流并用OpenCV显示视频1.4 使用FFmpeg获取并播放音频流1.5 使用FFmpeg播放本地MP4文件第2章 推流端的实现2.1 使用FFmpeg将RTMP流转推到另一台RTMP服务器2.2 使用OpenCV捕获摄像头并实现预览功能2.3 使用Windows API捕获麦克风数据并加入队列备用2.4 利用FFmpeg将摄像头画面与麦克风数据合成后推送到RTMP服务器第3章 桌面共享的实现3.1将推流端与播放端合并为一对一音视频聊天功能3.2 利用Windows API捕获桌面图像并通过FFmpeg分享3.3 使用Windows API捕获扬声器数据并加入队列备用3.4 实现桌面与摄像头叠加第4章 OpenCV图像处理与计算机视觉4.1 利用OpenCV检测物体是否运动了4.2 利用OpenCV快速数豆豆4.3 利用OpenCV实现人脸检测4.4 利用FFmpegOpenCV播放RTSP流4.5 利用OpenCV为RTSP流加入移动检测功能第5章 将工程移植到Android平台5.1 移植FFmpeg和OpenCV到Android环境5.2 在Android环境中使用FFmpeg和OpenCV进行开发的一般步骤5.3 在Android Native开发中加入新的C类5.4 在Android Native开发中架起Java与C互通的桥梁
返回列表