专题 > 编程语言 > C/C++ > C++音视频实战技术专题

C++音视频实战技术专题

课程讲解流行的音视频编解码库ffmpeg和图像领域应用广泛opencv库,实现视频直播推流,屏幕录像编码存储,跨平台视频播放器,视频编辑器

4

门课程

445

人学习

 

课程总时长:47小时35分钟

授课讲师:夏曹俊

打包优惠
 
大牛讲解
 
一键下载
 
讲师24h答疑

(9.26-9.28   折上8折)

专题价 ¥498
立省174元
总价 ¥672
  • 【夏曹俊】C++编程FFMpegSDK美颜直播推流实战-基于qt5,opencv视频课程

    67节 15小时22分钟
    课程目标:
    一 课程环境介绍1.系统环境:windows10  ubuntu16.04   win7及以上系统即可,XP系统没有经过验证,开发使用框架都是跨平台,可以代码不调整直接修改项目配置移植到linux和Mac环境中。   直播服务器配置在ubuntu 16.04 64位的虚拟机中。     2.开发工具:vs2015    可以使用vs2013,尽量不要使用太低的版本,太低版本对C++11的特性支持不好,在linux上或者mac环境可以使用QTcreater。3. 程序平台:x86 32位   可以使用64位,所有调用的第三方库都要保证是64位,arm平台可以直接移植,但需要编译ffmpeg、qt、opencv库源码。4.开发库版本   QT 5.9 32位    FFmpeg 3.3 32位   Opencv 3.2 32位      提供全部源码二课程介绍   1 基于c++编程,掌握录制视频(使用opencv支持rtsp和系统相机)录制音频(qt5)开发方法,掌握音视频各类参数含义,掌握音视频编码(h264+acc),磨皮双边滤波美颜(opencv),音视频封装(flv),基于rtmp协议推流。多线程处理技术各个模块交互。   2 掌握nginx-rtmp和crtmpserver的直播服务器配置。   3 课程讲解ffplay和html的flash插件播放直播   4 基于c++语言的一些设计模式完成直播美颜推流项目。   三课程内容示例1.直播推流流程2.直播推流项目类图3 直播推流音视频同步计算4 提供全部项目代码四 课程目录   
    • 课时1:课程介绍
    • 课时2:直播推流流程分析讲解
    • 课时3:直播rtmp协议分析
    • 课时4:直播服务器介绍crtmpserver编译运...
    • 课时5:下载ffmpeg工具推流并使用功能vlc...
    • 课时6:nginx-rtmp源码下载、编译运行(ubuntu)
    • 课时7:nginx-rtmp直播和直播状态监听配...
    • 课时8:ffmpegSDK开发环境准备,第一个ff...
    • 课时9:初始化封装和网络库打开音视频流...
    • 课时10:完成输出音视频流配置信息,使用f...
    • 课时11:打开rtmp推流输出并从文件读取音...
    • 课时12:AVPacket的pts运算并完成帧推送使...
    • 课时13:根据pts和系统记时控制推流速度_...
    • 课时14:推流基于rtsp协议的大华海康相机
    • 课时15:opencv源码在windows下载编译安装
    • 课时16:windows 上创建opencv示例项目
    • 课时17:遍历修改连续的Mat图像空间
    • 课时18:VideoCapture打开摄像头接口讲解...
    • 课时19:读取一帧视频接口讲解和源码分析...
    • 课时20:opencv播放rtsp海康摄像头和播放...
    • 课时21:基于opencv采集rtsp流并使用异常...
    • 课时22:像素格式转换(RGBToYUV)上下文...
    • 课时23:rgb转yuv空间分配和转换函数调用
    • 课时24:查找编码器并创建编码器上下文
    • 课时25:编码器参数配置(包括打开多线程...
    • 课时26:视频帧编码并根据设置AVFrame的输入pts
    • 课时27:创建封装器添加视频AVStream并设置参数
    • 课时28:打开推流IO,发送封装头,计算pts...
    • 课时29:XMediaEndcode工厂生产方法创建
    • 课时30:完成InitScale初始化像素格式转换接口
    • 课时31:完成RGBToYUV接口封装并重构代码
    • 课时32:完成视频编码器初始化InitVideoCo...
    • 课时33:完成了视频编码接口并重构rtsp_to...
    • 课时34:创建XRtmp接口类完成封装器接口
    • 课时35:QT5开发环境准备
    • 课时36:音频基础知识音频参数分析
    • 课时37:QT音频录制接口讲解并编写录制音...
    • 课时38:音频重采样上下文创建和配置
    • 课时39:音频重采样空间分配并完成重采样
    • 课时40:音频编码器创建和参数设置
    • 课时41:音频的pts运算音频数据编码测试
    • 课时42:完成音频推流并测试
    • 课时43:音频重采样XMediaEncode重采样接...
    • 课时44:封装音频编码器设置接口重构视频...
    • 课时45:完成音频编码接口封装和代码重构
    • 课时46:完成音频推流接口XRtmp封装重构音...
    • 课时47:封装音频XAudioRecord初始化和关闭接口
    • 课时48:完成音频录制接口,录制缓冲队列处理
    • 课时49:封装视频录制接口完成初始化和关...
    • 课时50:XDataThread数据处理线程类创建并实现
    • 课时51:XAudioRecord集成数据基类重构
    • 课时52:加入视频编码器和流
    • 课时53:完成音视频推流封装处理未同步
    • 课时54:音频推流同步策略分析
    • 课时55:音视频同步时间计算代码分析第一部分
    • 课时56:音视频同步二解决音频有相同pts情况
    • 课时57:音视频同步三完成同步
    • 课时58:磨皮双边滤波算法参数说明
    • 课时59:双边滤波磨皮算法调用并测试性能
    • 课时60:直播框架添加图像过滤XFilter接口...
    • 课时61:直播框架添加美颜磨皮
    • 课时62:XRtmpStreamer项目框架架构(类图)讲解
    • 课时63:完成了XController音视频录制模块初始化
    • 课时64:完成XController中的编码封装推流...
    • 课时65:XController推流数据线程完成
    • 课时66:QT直播推流项目完成界面设计
    • 课时67:完成了qt项目直播推流
    查看更多
  • 【夏曹俊】C++实战FFmpeg音视频编码实战屏幕录像机视频课程-基于QT5和ffmpeg sdk

    54节 10小时52分钟
    课程目标:
    本课程讲解的是基于最流行的直播技术 FFMpeg3.3音视频处理框架,和应用最广的c++跨平台的QT5库(主要用作界面)。开发的一个完整的屏幕录像机项目,包含桌面录制(基于 QT(跨平台),directx(高效)),(基于QT5)话筒录制,音视频h264编码,MP4封装。QT圆角边框界面。开发工具基于vs2013,但同样适用于vs更高版本。课程讲师:【夏曹俊】代码下载方法      课程提供全部源码和项目文件,在课程介绍页面的学习资料中下载界面课程大纲
    • 课时1:课程介绍
    • 课时2:封装和编码格式介绍mpeg4标准介绍
    • 课时3:FFMpeg库下载和vs项目创建
    • 课时4:创建mp4转mov的项目并调用SDK打开mp4文件
    • 课时5:创建mov封装格式的上下文创建并配...
    • 课时6:写入mov视频文件格式头信息
    • 课时7:完成成了视频音频帧数据写入并根...
    • 课时8:重封装用到的SDK接口和结构体通过...
    • 课时9:详解RGB和YUV
    • 课时10:创建视频编码项目设置并打开视频...
    • 课时11:完成视频编码的封装上下文创建和...
    • 课时12:视频像素格式转换rgb转为yuv
    • 课时13:视频封装头和尾写入视频帧编码
    • 课时14:完成视频写入清理,解决AVPacket...
    • 课时15:音频参数详解
    • 课时16:创建和配置音频编码器
    • 课时17:创建音频封装的输出上下文写入音...
    • 课时18:创建和配置音频重采样上下文
    • 课时19:创建音频输出AVFrame完成音频重采样
    • 课时20:完成音频的编码和封装入aac文件
    • 课时21:音视频编码类封装介绍和使用ffmpe...
    • 课时22:创建XVideoWriter接口类完成工厂...
    • 课时23:完成ffmpeg初始化、输出上下文初...
    • 课时24:新增视频流接口添加,设置视频编...
    • 课时25:设置rgb转yuv转换上下文参数设置...
    • 课时26:读取文件中rgb数据转换为yuv
    • 课时27:完成h264视频帧编码和相关资源清理
    • 课时28:打开视频输出IO写入mp4视频文件头
    • 课时29:写入视频帧和视频索引并修正视频...
    • 课时30:音频编码器参数设置并打开
    • 课时31:音频重采样上下文参数设置和初始化
    • 课时32:读取音频文件中pcm进行重采样并清...
    • 课时33:音频编码和MP4文件写入
    • 课时34:音频pts计算并完成音视频写入同步计算
    • 课时35:directx截屏接口讲解
    • 课时36:完成directx3d对象创建和显卡devi...
    • 课时37:创建离屏表面并截取屏幕编码为mp4视频
    • 课时38:QT5开发环境准备QtScreen项目创建
    • 课时39:完成qt屏幕截图并在QWidget中显示
    • 课时40:使用qt显示directx截屏并比较两种...
    • 课时41:QT音频录制类方法讲解
    • 课时42:使用qt完成音频录入并将录入音频...
    • 课时43:屏幕录像机项目简介和用到的qt技...
    • 课时44:设置圆角无锯齿窗口并添加关闭和...
    • 课时45:完成按钮的三种样式图片设置,使...
    • 课时46:完成录制和停止录制按钮事件响应...
    • 课时47:项目类图类设计
    • 课时48:XCaptureThred类启动关闭和线程入...
    • 课时49:XCaptureThread截屏线程和队列rgb...
    • 课时50:XAudioThread音频录制类编码完成.
    • 课时51:XScreenRecord屏幕录制控制类完成...
    • 课时52:完成XScreenRecord音视频的录制接...
    • 课时53:完成了屏幕录像机qt界面与XSCreen...
    • 课时54:视频录制程序发布dll库准备
    查看更多
  • 【夏曹俊】c++实战学习OpenCV3.2+QT5+ffmpeg实战开发视频编辑器视频教程

    69节 14小时9分钟
    课程目标:
       课程更新完毕,后面会根据同学的意见维护此课程    课程讲师:【夏曹俊】    课程基于opencv最新版3.2讲解,全部使用最新的c++接口,旧的接口会逐步被opencv抛弃,所以我们学习还是尽量学习新的接口,QT使用最新的5.8版本,课程中会跨平台演示,所有代码都可以在windows和linux中编译,在windows中使用vs2013,linux中使用qtcreator,课程会提供全部源码和最新opencv和QT版本的下载。    课程中讲解的opencv知识点,不追求全(全不如看手册),但求完整,讲解我们实战项目用到的函数方法,但凡是讲到的都要有一定的深度,分析其函数的实现、源码,有些我们自己也作出实现,课程的目标不是只能作出demo,而是要你能将opencv投入到实际项目中去。     现在深度学习和人工智能热门,大量的技术涌现,单opencv作为老牌的图像视频库,一直是在大量的生产环境(包括嵌入式设备)中应用,不管你用什么深度学习的平台,opencv都是作为图像图像领域及佳的选择,可以很方便的与第三方深度学习框架结合 ,我公司项目中也一直在应用。      课程中会讲解到基于opencv视频和摄像机录制、播放和播放进度控制,多视频图像合并、多视频图像融合、剪切、视频亮度、对比度、尺寸(近邻插值(手动实现),双线性插值,高斯金字塔,拉普拉斯金字塔)、颜色格式(灰度图,二值化(阈值)),旋转镜像,视频裁剪(ROI),视频水印(ROI+weight),导出处理后的视频(包含音频,使用ffmpeg工具对音频进行抽取、剪切和最终于opencv处理的视频合并)。      课程中会讲解最热门的跨平台界面库QT5.8,用过或者学习过QT的人都知道这是c++程序员必须掌握的技能,包括现在热门的Python也是在大量的应用QT来做界面,QT的设计及其精美,他的信号槽机制很好的将界面与业务隔离开来,并且界面可以使用类似CSS的设置做得很炫(参考下图),不会像MFC一样自动生成的代码和你手写的代码融合在一起。当然我们也会仔细分析一下他的信号槽机制,你不理解他的机制会有很多坑等着你。      课程中的实战视频编辑器会详细相机项目的设计架构图,提供全部源码,对实现进行迭代式讲解,就像你自己在做一个项目一样,最终完成所有的功能。下图是最终实现的软件界面
    • 课时1:课程介绍
    • 课时2:opencv源码在windows下载编译安装
    • 课时3:Ubuntu下编译opencv源码
    • 课时4:windows 上创建opencv示例项目编译并执行.
    • 课时5:ubuntu上创建opencv示例项目makef...
    • 课时6:QT开发环境下载、项目创建、代码...
    • 课时7:课程代码下载说明
    • 课时8:OpenCV Mat类型分析源码介绍、空...
    • 课时9:遍历和修改连续的OpenCV Mat图像空间
    • 课时10:使用opencv接口实现运行记时函数...
    • 课时11:遍历不连续的OpenCV Mat空间
    • 课时12:通过OpenCV ptr模板函数遍历Mat...
    • 课时13:通过OpenCV at函数遍历Mat并捕获异常
    • 课时14:通过迭代器遍历Mat并总结遍历方法
    • 课时15:QT自定义opengl的Widget绘制Mat
    • 课时16:通过ROI感兴趣区域来裁剪图像
    • 课时17:RGB、YUV、GRAY像素格式介绍openc...
    • 课时18:手动实现转换灰度图并与opencv提...
    • 课时19:通过OpenCV阈值函数threshold实现...
    • 课时20:通过对Mat遍历修改图像亮度和对比...
    • 课时21:图像尺寸调整算法介绍并手动实现...
    • 课时22:调用opencv的resize使用近邻算法...
    • 课时23:图像尺寸调整双线程插值算法讲解...
    • 课时24:高斯金字塔和拉普拉斯金字塔调整...
    • 课时25:实现两幅图像混合blending
    • 课时26:图像旋转和镜像
    • 课时27:通过ROI实现图像并排合并
    • 课时28:OpenCV VideoCapture打开摄像头...
    • 课时29:OpenCV VideoCapture打开视频流...
    • 课时30:VideoCapture release关闭和空间...
    • 课时31:OpenCV read读取一帧视频接口讲...
    • 课时32:使用OpenCV VideoCapture播放视频示例
    • 课时33:获取视频和相机的属性并分析获取...
    • 课时34:使用opencv实现视频播放位置跳转
    • 课时35:通过VideoWrite的open创建视频文...
    • 课时36:通过VideoWrite的write写入视频文...
    • 课时37:以h264格式录制并预览摄像机视频...
    • 课时38:使用ffmpeg工具实现音频抽取、剪...
    • 课时39:编辑器的需求分析和最终实现的功...
    • 课时40:项目类图介绍和类功能讲解
    • 课时41:基于QT系统界面设计详解
    • 课时42:实战项目环境搭建、项目创建和配置
    • 课时43:完成视频编辑器播放界面并完成绘...
    • 课时44:详解通过qss完成界面风格设置,设...
    • 课时45:通过qt界面打开外部视频并完成打...
    • 课时46:使用opencv读取并解码视频通过信...
    • 课时47:解码并使用播放视频,分析并解决Q...
    • 课时48:视频播放器进度条(QSlider)显示...
    • 课时49:通过QSlider滑动条拖动完成视频播...
    • 课时50:调整视频亮度对比度1完成XImagePro类
    • 课时51:调整视频亮度对比度2完成XFilter类
    • 课时52:调整视频亮度对比度3完成界视频结...
    • 课时53:视频的导出1接口调用搭建和界面实...
    • 课时54:视频导出2功能实现
    • 课时55:完成播放暂停并使用qss设置播放暂...
    • 课时56:视频图像旋转并导出
    • 课时57:视频上下左右镜像.
    • 课时58:调整视频尺寸并导出
    • 课时59:通过图像金字塔调整视频尺寸
    • 课时60:通过ROI裁剪视频画面
    • 课时61:转换为灰度图视频并导出
    • 课时62:视频添加水印
    • 课时63:视频融合1-完成了打开第二个视频源
    • 课时64:视频融合2-完成了融合和导出.
    • 课时65:两路视频的横向合并为一个视频
    • 课时66:音频类的抽取接口开发和测试
    • 课时67:完成视频中音频的的合并导出
    • 课时68:完成了视频的开始结束位置剪辑音...
    • 课时69:完成了视频剪辑包含音频剪辑
    查看更多
  • 【夏曹俊】C++实战手把手教您用ffmpeg和QT开发播放器实战视频课程

    38节 7小时10分钟
    课程目标:
        这门课程给大家讲解的是基于当前最流行FFMpeg视频处理框架和最流行的QT跨平台库。开发的一个完整的视频播放器,不是基于视频播放控件开发,而是从底层全部实现。   本课程从功能需求分析、基本原理讲解到代码实现演示,让您经历一个实际项目的全过程。   特别适合有一定C或者C++基础,想要提高自己是实战能力学员,学完此门课,可以说你们项目经历里面就可以增加一项,开发过qt和ffmpeg的C++程序,实现了一个播放器的音视频全部功能。   本课程同时也适合与想要学习ffmpeg和qt的同学,本课程学完之后你就已经将ffmpeg可以投入实际的项目应用,对于QT的基本原理你也非常清楚了,可以实现复杂的qt界面,您就可以独立开发出音视频的各种应用,包括无人机,安防,直播视频直播,视频会议,并能够开发出跨平台的应用.      所有视频精心制作,采用用专用录音话筒和录制声卡,确保没有噪音,所有代码演示都经过放大处理适应手机观看。课程讲师:夏曹俊
    • 课时1:课程介绍
    • 课时2:QT开发环境准备
    • 课时3:ffmpeg介绍和开发环境准备
    • 课时4:学习方法说明和课程代码下载演示
    • 课时5:2.1ffmpeg打开视频文件
    • 课时6:2.2ffmpeg读取视频帧
    • 课时7:2.3打开ffmpeg的视频解码器
    • 课时8:2.4ffmpeg视频解码并分析H264压缩算法
    • 课时9:2.5打开ffmpeg格式转换和缩放器
    • 课时10:2.6使用ffmpeg转换为RGB数据并缩放视频
    • 课时11:2.7重构封装FFmpeg类完成打开和关...
    • 课时12:2.8重构FFmpeg读取视频帧接口
    • 课时13:2.9重构ffmpeg解码接口
    • 课时14:2.10重构封装FFmpeg缩放接口
    • 课时15:3.1基于QT的播放器界面绘制
    • 课时16:3.2通过QT显示转码后的RGB数据
    • 课时17:3.3创建解码线程控制播放速度
    • 课时18:3.4通过QT打开外部视频
    • 课时19:4.1视频总时间显示
    • 课时20:4.2视频播放的当前时间显示
    • 课时21:4.3进度条显示播放进度
    • 课时22:4.4进度条拖动控制播放位置
    • 课时23:4.5控制视频的播放和暂停
    • 课时24:4.6视频显示和窗口大小同步变化
    • 课时25:4.7重载QT滑动条点击控制播放进度
    • 课时26:5.1QT音频库介绍和示例
    • 课时27:5.2QT音频播放类封装
    • 课时28:5.3QT音频播放的启动和停止接口实现
    • 课时29:5.4QT音频播放暂停和缓冲写入接口实现
    • 课时30:5.5ffmpeg音频解码器打开
    • 课时31:5.6ffmpeg音频解码
    • 课时32:5.7ffmpeg音频重采样标准化音频的...
    • 课时33:5.8完成音视频的播放
    • 课时34:5.9通过多线程和缓冲队列实现音视...
    • 课时35:ubuntu下安装qt5.8并编译安装ffmpeg
    • 课时36:将XPLay播放器项目移植到ubuntu下...
    • 课时37:6.1代码下载说明
    • 课时38:6.2课程总结
    查看更多

C++音视频实战技术专题

¥672 ¥498

可以开发票么?

可以的,购买课程或者充值余额后都是可以开具发票的,具体详情点击:我要开发票

购买的课程可以下载么?

目前PC端暂不支持下载课程视频,请手机或者平板电脑下载“51CTO学院”APP后再下载视频哦!

优惠券如何使用?

非折扣课程(不包含1元课程/套餐)可使用,一个订单(可包含多个课程)只可使用一张;优惠券一经使用,不再返还;若被冻结请在PC端删除订单即可返还。

更多问题查询点击 帮助中心

欢迎您提供宝贵意见,对于您的意见我们都会认真、慎重的讨论,每一个意见都是我们更好为您服务的鞭策和激励,感谢您帮助学院成长,我要反馈意见