FFmpeg基础到工程-多路H265监控录放开发学习笔记

news2024/10/7 18:30:06

多路H265监控录放开发学习笔记

课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。
具体内容包括:
一、视频监控的架构和流程
二、FFmpeg4.3+SDL2+Qt5开发环境的搭建
三、FFmpeg的SDK编程回顾总结并操练
四、SDL2.0的编程回顾总结并操练
五、颜色空间转换RGB和YUV的原理与实战
六、Qt5+FFmpeg本地摄像头采集预览实战
七、代码封装:摄像头h264/5编码并存储
八、Qt5+FFmpeg单路网络摄像头采集预览
九、Qt5+FFmpeg单路网络摄像头采集预览录制会看
十、onvif与GB/T-28181的简介
在这里插入图片描述

课程目录

第一章:开发环境准备

FFmpeg 4.3 音视频课程介绍
学习引导和章节介绍必看
环境准备步骤说明VS2019控制台和msys2运行环境准备
msys2使用pacman安装编译依赖工具
完成x264源码编译和安装
完成x265源码编译和安装
完成音频编码fdk-aac源码编译和安装
ffmpeg4.3在vs2019完成源码编译
第一个vs2019ffmpeg项目创建和源码pdb调试设置
Linux编译x264_x265_aac
Linux编译ffmpeg4.3并编写测试程序makefile
QT5.14安装和项目创建并切换不同的QT版本
章节总结和ffmpeg代码调试设置

第二章:图像格式_基于QT和SDL渲染

学习引导和章节介绍必看
RGB像素格式原理讲解并使用QT渲染RGB数据
合并两幅图像并使用SDL_QT渲染和保持的案例技术分析
SDL2源码编译安装和渲染视频接口详解
SDL2渲染RGB数据画面定时变化
SDL渲染RGB数据到QT的控件中通过定时器刷新
合并两幅图像法使用SDL渲染并用QT保存文件
YUV格式详解并使用ffmpeg生成yuv文件
使用SDL_QT直接播放渲染YUV格式文件
XVideoView工厂模式封装SDL接口设计和代码实现
XSDL封装完成窗口渲染器和材质的初始化
完成XSDL渲染Draw接口并测试渲染YUV420数据
渲染画面随着窗口大小自动缩放并解决锯齿问题
完成XSDL资源清理接口接收窗口退出事件并自动处理窗口缩放
章总结_代码下载编译说明和作业

第三章:FFmpeg AVFrame视频渲染

学习引导和章节介绍必看
AVFrame结构体和相关ffmpeg接口详解
测试AVFrame的空间分配引用计数接口并测试字节对齐
读取YUV数据到AVFrame并添加渲染AVFrame的接口
视频帧率详解帧率控制策略分析和sleep时间不准的问题分析
测试sleep和wait的精确度并实现精确控制帧率的MSleep
多线程控制帧率渲染AVFrame的YUV数据 36:04 开始学习
渲染界面中添加显示fps和设置fps的控件完成设置渲染帧率
章总结_代码下载编译说明和作业

第四章:FFmpeg像素格式转换和多路YUV、RGB渲染

学习引导和章节介绍必看
FFMpeg的像素格式转换接口sws_scale详解
像素格式转换YUV420P转换为RGBA并写入文件
sws_scale像素格式转换RGBA转YUV420P
多路YUV_RGB文件播放器需求和设计说明
YUV_RGB播放器QT界面设计和打开文件处理
完成多路XVideoView窗口初始化并生成测试的YUV和RGB文件
XVideoView_Read接口读取像素数据并初始化AVFrame空间
完成了支持YUV和RGB格式两路视频同时播放
完成了两路视频帧率显示并能设置不同的播放帧率
章总结_代码下载编译说明和作业

第五章:FFmpeg视频编码原理和实战

学习引导和章节介绍必看
视频编码原理概述
FFMpeg编码接口和AVPacket结构体详解
FFmpeg编码器获取和上下文打开
完成了视频帧创建和编码
完成h264和h265编码并使用VLC测试播放
H264原理分析宏块划分_帧间预测I帧_帧内预测P帧和B帧_GOP
变换_量化和熵编码_变长和算数编码CABAC分析
x264预设编码器preset_tune设置编码速度和质量
代码试验ultrafast最快编码和zerolatency零延时参数设定
ABR平均比特率CQP恒定质量X264和x265QP参数选择试验
CBR恒定比特率_CRF恒定速率因子_VBV代码测试
H264码流中NALU_SPS_PPS_IDR帧的分析
代码测试解析出AVPacket中的NALU类型SPS_PPS和IDR
XEncode编码封装完成上下文创建和测试代码
XEncode添加线程安全锁并添加支持crf参数的设置
XEncode完成编码和AVFrame创建接口封装
XEncode解决丢帧添加获取编码缓冲区接口_编码封装完成
章总结_代码下载编译说明

第六章:FFmpeg视频软解码和硬解码

学习引导和章节介绍必看
FFmpeg视频解码接口详细分析
av_parser_parse2从h264文件中截取AVPacket
基于ffmpeg接口完成视频解码
完成解码视频渲染并测试多线解码帧率
完成硬件GPU加速解码DXVA2并测试CPU使用率和帧率
修改XVideoView支持渲染硬解码NV12格式数据
重构XEncode添加基类XCodec并完成XDecode封装
完成XDecode解码支持硬解并做了播放测试
DXVA硬解码到GPU不复制到内存直接渲染原理和接口分析
DXVA硬解到GPU不复制内存渲染代码实现
章总结和作业要求

第七章:FFmpeg封装和解封装

学习引导和章节介绍必看
封装分析和MP4封装格式详解
FFmpeg解封装流程和接口详解
FFmpeg解封装代码示例并区分音频视频包
完成解封装后对视频进行解码和渲染代码
封装流程分析ffmpeg封装文件接口详解
av_seek_frame控制播放进度函数详解
完成重封装mp4文件测试基本代码
重封装剪切中间10秒视频并重新计算pts_dts
完成XFormat和XDemux重构解封装并测试接口 41:05 开始学习
完成封装代码重构XMux并测试重新封装音视频文件
根据输入的文件名和时间参数完成截断视频功能 36:37 开始学习
完成视频重编码为h265并写重新封装MP4 34:11 开始学习
章总结和代码说明

第八章: FFmpeg解封装rtsp并录制视频

学习引导和章节介绍必看
使用VLC模拟一个rtsp服务器
RTSP协议详细分析包括鉴权协议分析
大华和海康相机设置和rtsp协议抓包分析
ffmpeg的rtsp相关接口分析和多线程处理解封装说明
完成XThread线程类的启动和安全退出_XLOG日志宏代码
开发XDemuTask线程类使用上下文的回调函数实现超时退出AVIOInterruptCB 32:02 开始学习
解封装rtsp断网或摄像机重启后自动重连处理
解封装解码线程责任链设计模式和线程安全的list类图设计说明
完成责任链代码和返回智能指针类型的解封装视频参数
完成解码线程初始化和并实现线程安全的XAVPacketList
完成通过责任链接收解封装AVPacket数据并解码视频
完成rtsp的多线程责任链解封装解码和渲染
封装音视频处理线程代码初始化传递音视频参数
完成相机录制重新封装处理pts计算问题
章总结和代码测试本地模拟rtsp

第九章:XViewer多路H265监控录放0.1版本项目开发

学习引导和章节介绍必看
XViewer多路H265监控录放开发项目需求文档详细分析
XCodec封装音视频编解码和渲染的动态链接库编译和测试
预览界面设计说明XViewer项目创建和配置并设置程序图标
XViewer窗口自定义标题_关闭_最小化按钮和窗口拖动的鼠标事件处理
XViewer窗口布局设计和窗口最大化和恢复处理
右键菜单调整预览窗口数量1_4_9_16通过QGridLayout
完成摄像机管理的数据的增删改模型层代码 32:58 开始学习
XCameraConfig持久化写入和读取文件中的摄像机配置
完成相机配置读取和列表显示列表显示
代码生成新增摄像机配置界面_并使用qss设置按钮样式
完成摄像机管理的修改和删除功能
通过QListWidget拖拽实现指定播放rtsp和窗口
通过拖拽配置完成多窗口rtsp相机的渲染
多路音视频录制模块设计说明和XCameraRecord录制测试
定时创建新的视频文件并解决录制文件开发花屏问题
多路相机录制界面交互功能完成
回放界面设计并实现与预览界面的切换按钮
自定义日历控件显示有视频日期继承QCalendarWidget
点击摄像机刷新日历改变有视频文件日期的背景
点击视频时间列表获取视频绝对路径
添加回放日历中的视频播放器
完成回放视频播放器的播放速度控制_项目0.1版本完成
章总结和XViewer0.1编码和准备发布版本

第十章:音频原理_ffmpeg&SDL播放音视频同步

学习引导和章节介绍必看
音频核心基础声波频率_采样频率_采样大小_信噪比_多通道平面存储
PCM格式_音频编码分析_SDL音频播放接口介绍
完成SDL播放PCM音频文件项目
完成了XAudioPlay类的单件模式初始化
完成XAudioPlay播放音频通过缓冲队列传递数据
音频播放音量和播放速度_慢放和快放音频处理
mp4中音频解码解封装手动转换平面格式并使用用SDL播放 52:05 开始学习
音视频同步_初始化_渲染播放和时间同步协作图分析
音视频播放XPlayer视频打开和线程初始化
完成音视频文件多线程同步播放 47:39 开始学习
章总结和代码说明

第十一章:XViewer 0.2版本

习引导和章节介绍必看
xviewer0.2监控工具支持音视频同步播放 36:09 开始学习
完成QT界面设置音视频播放速度_慢放和快放
完成QT进度条显示视频播放进度
完成音视频的暂停和播放
成SEEK进度条控制播放进度
修正无法删除摄像机和修改线程退出函数后录制回放出错_日历样式和布局

第十二章:ffmpeg_gsoap_onvif探测和预览onvif协议

学习引导和章节介绍必看
Onvif协议分析和测试工具使用
gsoap的wsdl2h_vs2019支持ssl编译和运行测试
生成支持鉴权的onvif代码gsoap的soapcpp2使用
创建第一个test_onvif项目
初始化和清理相机探测probe的soap消息头
完成gsoap的onvif_discovery探测设备
封装gsoap代码使用c++调用重构设备探测
完成鉴权并获取onvif设备能力GetCapabilities
完成onvif鉴权和获取媒体信息GetProfiles
完成onvif的rtsp地址获取GetStreamUri
基于gsoap的ffmpeg预览onvif摄像机设备代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chomsky文法

一、实验原理 了解0123型文法的定义并会判断各个文法,会编写并利用程序进行0123型文法的判断 二、实验目的 由于不同文法的判断归根结底是对产生式中不同终结符和非终结符个数的判断,所以在程序中先放置三个字符串集合用以存储终结符、非终结符、产生…

git clone info/refs not valid: is this a git repository问题解决

项目场景: 在我们使用gitlab克隆代码时候,发现无法克隆,遇到如下问题 $ git clone http://192.168.2.x/product/demo.git Cloning into zhlx-web-bpmn... fatal: http://192.168.2.x/product/demo.git/info/refs not valid: is this a gi…

几张图片生成3D模型?距离真正的AI建模还有多远?

时间溯回,早在2017年,美图秀秀就曾引入人工智能美化人像而被谷歌誉为“最佳娱乐App”。智能技术奔腾发展,今年的AIGC技术可谓在各行各业大放异彩,从AI绘画、AI写作到AI配音,人工智能技术自动生成内容已经成为继UGC、PG…

Go C编程 第1课 神奇的魔笔

慧通教育 慧通教育 1.画长方形(GoC测试题样例) 难度:1 登录 26.画7字(魔法学院第3课) 难度:1 登录 27.画2字(魔法学院第3课) 难度:1 登录 28.画十字(魔法学院第3课) 难度:1 登录 29.画旗帜(魔法学院第…

linux系统使用rsync做主备服务器文件同步

根据本文档设置,可以实现备机自动同步主机中的文件。 (注意,此方式缺陷为:如果主机文件修改,但是文件大小无变化或者文件变小时,无法自动同步到备机中,只有主机中文件修改后变大或者名称修改才能…

DP学生最喜欢/讨厌选学的IB课程是什么?

我们看看IBDP在读生们对于IBDP各学科的主观看法供正在选课的准IB学生们参考!(以下以第一人称方式,信息汇总于IB论坛,仅汇总部分科目,主观性强,仅供参考)DP学生最喜欢的IB课程 ● 数学 AA HL 被数…

Java基于springboot+vue+elementUI企业制度管理系统

本企业制度管理系统是针对目前企业制度管理的实际需求,从实际工作出发,对过去的企业制度管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率…

如何从音频中提取伴奏?这篇文章告诉你如何提取伴奏

有没有小伙伴在制作视频后期的时候为配乐而烦恼过呢?我就有,之前想为一个视频配上音乐,就直接将歌曲导入视频里面,但出来的效果很是杂乱,导致视频的声音听起来非常嘈杂,影响到了听感和观感,但是…

.NET MAUI Community Toolkit 中的新增功能

对于 .NET MAUI Community Toolkit 来说,11月是一个繁忙的时期,它发布了多个版本,其中包含大量令人惊叹的新功能。最新版本具有新的视图、布局、Tizen 支持、.NET 7 支持等等。这篇文章带你快速了解所有新功能。 什么是 .NET Community Toolk…

Spring Security学习笔记

目录 1、简介 2、初步使用 3、简单实现自定义登录页面用户名和密码 1、简介 Spring Security是一个安全管理框架,主要功能是认证和授权,大中型项目用的比较多,小项目Shiro用的比较多,但是Spring Security比Shiro功能更强大&am…

Appium基础 — APPium基础操作API

目录 1、前置代码 2、安装和卸载APP 3、判断APP是否已安装 4、关闭app软件和关闭驱动对象 5、发送文件到手机和获取手机中的文件 6、获取当前屏幕内元素结构(重点) 7、脚本内启动其他app 8、将应用程序置于后台运行(重点)…

小雉系统4.0

项目地址 官网 飞天雉&&小雉视频系统 github https://github.com/feitianzhi/xiaozhios gitee xiaozhios: “小雉系统”并非是开发操作系统,而是一套服务于软件供应商的产品升级方案; QQ交流群:869598376 小雉系统简介 “小雉系统”并非是开发操作系统,而…

SpringCloud项目实例--服务通讯基础API方法

Spring Cloud Alibaba提供的组件如下: Sentinel:阿里巴巴开源产品,不仅仅可以作为断路器,也支持流量控制和服务降级。 Nacos:阿里巴巴开源产品,服务注册与服务发现,同时也可以作为配置中心。 R…

21 【styled-components的使用】

21 【styled-components的使用】 1.为什么要用这个 我们都知道,我们从最开始学css的时候,为了避免写的样式影响到另外的地方。所以我们这样来写的。 #userConten .userBtn button{font-size: 18px; }首先给一个元素写了一个唯一id | class&#xff0c…

自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件(最完整的)

今天笔者就要归纳总结下一整套测试流程,从无到有,实现零突破,包括如何编写测试用例,定时执行测试用例,查找最新生成的测试报告文件,自动发送最新测试报告邮件,一整套完整的测试流程。以后各位只…

Spring Boot使用EasyExcel导入导出Excel

一、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency> 二、实现导出excel操作 1、对我们需要导出的实体类上加上注解&#xff0c;如下&#…

(二)字符函数和字符串函数详细讲解和模拟实现(优化)

✨✨✨✨✨✨✨✨✨&#x1f4d7;字符串查找函数&#xff1a;1.strstr函数2.strtok函数&#x1f4d4;错误信息报告函数&#xff1a;1.strerror函数&#x1f4d3;内存操作函数1.memcpy函数2.memmove函数3.memset函数4.memcmp函数❤️字符函数讲解&#x1f4d2;字符分类函数&…

Spring Cloud Alibaba整合Sentinel,使用nacos持久化流控规则

一、引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifac…

小程序开发有什么快捷、低成本的方法?

2022年1月17日&#xff0c;阿拉丁研究院在《2021 年度小程序互联网发展白皮书》中提到&#xff0c;微信小程序开发者突破 300 万&#xff0c;DAU 超过 4.5 亿&#xff0c;正成为人们生活的 “标配”。 作为用户&#xff0c;我们几乎时时刻刻都享受着互联网带来的便利&#xff…

JMeter5.5入门到实战:HTTP+TCP+响应断言+自定义拓展+返回值获取

前言 众所周知JMeter是业内公认的性能测试工具&#xff0c;功能十分强大且易于拓展&#xff0c;但是入门有一定门槛&#xff0c;需要明白一些基本概念。本文使用了HTTP取样器、TCP取样器、响应断言、JSON提取器等组件&#xff0c;对公司现存的登录流程进行了测试。公司的产品包…