随笔分类 -  Qt/C++音视频开发

摘要:一、前言 通过gb28181做实时视频预览,也就是视频点播功能,是最重要的功能了,绝对是整个系统排第一重要的,这就是核心功能,什么设备注册、获取通道等都是为了实时预览做准备的,当然这个功能也是最难的,所有搞gb28181开发的程序员,都是卡在这里很长一段时间才搞定,因为这个视频点播的交互流程比较绕, 阅读全文
posted @ 2025-05-10 10:34 飞扬青云 阅读(74) 评论(0) 推荐(0)
摘要:一、前言 警情订阅在gb28181协议中也是一个重要的功能,一般是服务端主动问设备端订阅,不知道设备端是否能问服务端订阅?貌似行不通。 订阅后设备端一旦有警情消息,会主动发给服务端,比如运动目标检测报警、视频丢失报警、入侵检测报警等,在gb文档中详细列举了对应哪种类型的报警对应哪个type类型,这个 阅读全文
posted @ 2025-05-08 14:20 飞扬青云 阅读(118) 评论(0) 推荐(0)
摘要:一、前言 之前用onvif已经完美实现了设备的云台控制和预置位的功能,这个基础功能在监控系统中是使用频率很高的,所有gb28181肯定也提供了这样的功能,很多人以为是通过包含xml数据,对应节点指定对应的动作来实现,其实不是的,是类似于早期模拟设备的云台的串口协议中的控制指令,16进制格式的数据,一 阅读全文
posted @ 2025-05-02 10:49 飞扬青云 阅读(119) 评论(0) 推荐(0)
摘要:一、前言 设备注册成功后,接下来要做的就是获取设备的信息,尤其是通道信息,根据国标协议,永远只有两个层级,一个是设备,然后就是设备下面多个通道,设备编码在整个系统中唯一,通道编码在一个设备中唯一,如果不唯一,那就可能会产生冲突,其实是程序层面的冲突,硬件层面不冲突,这个不是mac地址这种唯一性,仅仅 阅读全文
posted @ 2025-04-29 17:26 飞扬青云 阅读(140) 评论(0) 推荐(0)
摘要:一、前言 根据gb28181协议文档,第一步就是需要实现设备的注册,和onvif不同,gb是反过来的,设备端主动连接服务端,而onvif是服务端主动发出搜索,设备被动应答,包括后续的交互几乎都是被动应答,除了警情上报。gb这样定义协议有个巨大好处,就是跨网,服务器上的软件可以在公网上,然后设备这边主 阅读全文
posted @ 2025-04-27 09:50 飞扬青云 阅读(61) 评论(0) 推荐(0)
摘要:一、前言 搞gb28181开发,首要任务就是解析协议,按照gb28181的文档来,还是非常详细的,通过抓包工具可以查看到具体的收发数据,也可以打开网络调试助手工具,监听5060端口,看到上报的数据,都是一个通用规则的协议。 //设备端发送 REGISTER sip:34020000002000000 阅读全文
posted @ 2025-04-24 10:50 飞扬青云 阅读(168) 评论(0) 推荐(0)
摘要:一、前言 在音视频开发中,音量的控制分两块,一个是控制播放器本身的音量,绝大部分场景都是需要控制这个,这个不会影响系统音量的设置。还有一种场景是需要控制系统的音量,因为播放器本身的音量是在系统音量的基础上控制的,也就是系统音量30%,意味着播放器最大的音量也是只能到系统音量的30%,这个情况在小部分 阅读全文
posted @ 2025-03-12 16:57 飞扬青云 阅读(181) 评论(0) 推荐(0)
摘要:一、前言 用ffmpeg做硬解码开发,参考自带的示例hw_decode.c即可,里面提供了通用的dxva2/d3d11va/vaapi这种系统层面封装的硬解码,也就是无需区分用的何种显卡,操作系统自动调度,基本上满足了各种场景的需要,这种方式很通用也便捷,但是一些特殊场景必须要用指定硬解码器名称的方 阅读全文
posted @ 2024-12-12 09:12 飞扬青云 阅读(792) 评论(0) 推荐(0)
摘要:一、前言 这个一边推流一边录制的功能,有很多用户提到过,之前因为时间的原因,一直没有搞,年初的时候索性抽空搞了下,也着实费了些功夫。推流用的是ffmpeg这个开源的牛逼的第三方库,搞音视频开发的人应该没人不认识这个库,养活了很多程序员以及厂家,甚至不乏一些大厂,如果能把ffmpeg搞精通,在国内拿个 阅读全文
posted @ 2024-11-11 16:45 飞扬青云 阅读(270) 评论(0) 推荐(0)
摘要:一、前言 随着直播的兴起,采集本地摄像头和麦克风进行直播推流,也是一个刚需,最简单的做法是直接用ffmpeg命令行采集并推流,这种方式简单粗暴,但是不能实时预览画面,而且不方便加上一些特殊要求。之前就已经打通了音视频文件和视频流的采集,那是不是可以简单点的方式就能直接加入到原有的框架中呢,答案是可以 阅读全文
posted @ 2024-08-24 18:21 飞扬青云 阅读(501) 评论(0) 推荐(0)
摘要:一、前言 目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;另一种是WebRTC协议的直播,这种直播方式使用UDP的 阅读全文
posted @ 2024-07-31 08:11 飞扬青云 阅读(1014) 评论(0) 推荐(0)
摘要:一、前言 随着音视频的爆发式的增长,各种推拉流应用场景应运而生,基本上都要求各个端都能查看实时视频流,比如PC端、手机端、网页端,在网页端用websocket来接收并解码实时视频流显示,是一个非常常规的场景,单纯的http-flv模式受限于最大6个通道同时显示,一般会选择ws-flv也就是webso 阅读全文
posted @ 2024-07-23 08:01 飞扬青云 阅读(520) 评论(0) 推荐(0)
摘要:一、前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行 ffmpeg -f dshow -list_options true -i video="Webcam" 命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这 阅读全文
posted @ 2024-07-07 09:17 飞扬青云 阅读(388) 评论(0) 推荐(0)
摘要:一、前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以执行命令 ffmpeg -f dshow -list_devices true -i dummy 去 阅读全文
posted @ 2024-06-16 13:15 飞扬青云 阅读(101) 评论(0) 推荐(0)
摘要:一、前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌入式板子,就算有multimedia组件,也是个空壳子,根本没有实际的功能,本身multimedia 阅读全文
posted @ 2024-06-04 11:54 飞扬青云 阅读(144) 评论(0) 推荐(0)
摘要:一、前言 在需要打开本地摄像头的场景中,有个需求绕不开,那就是如何获取本地有哪些摄像头设备名称,这样可以提供下拉框给用户选择,不然你让用户去填设备名,你觉得用户会知道是啥,他会操作吗?就算你提供了详细的查看步骤,估计也很难,如果用户是程序员还好,如果是电脑小白,鼠标都用不好,你还让他去找摄像头设备的 阅读全文
posted @ 2024-05-27 09:01 飞扬青云 阅读(150) 评论(0) 推荐(0)
摘要:一、前言 在使用yolo做人工智能运算后,运算结果除了一个方框,还可能需要增加文字显示在对应方框上,以便标记是何种物体,比如显示是人还是动物,或者还有可能追踪人员,显示该人员的姓名。这种应用场景非常普遍,而且非常有必要,可以非常直观的直接看到对应移动的物体是什么。当然也有个缺点,就是当图层方框特别多 阅读全文
posted @ 2024-05-18 09:48 飞扬青云 阅读(107) 评论(0) 推荐(0)
摘要:一、前言 视频监控系统发展到今天,越来越智能,比如这些年流行的人脸识别、物体识别、烟感识别等,都是需要拿到图片数据去做运算处理,然后将结果显示到视频画面中,或者还有要求将结果保存到视频录像文件中,以便打开回放查看。显示到画面中一般有两种方式,一种是通过滤镜的方式直接写入到图片视频数据中,一种是直接用 阅读全文
posted @ 2024-05-10 10:07 飞扬青云 阅读(227) 评论(0) 推荐(0)
摘要:一、前言 最近多了个新需求,需要倍速推流,推流界的扛把子obs也有倍速推流功能,最高支持到两倍速。这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放。实时视频流是不可能倍速的,因为没有时长,有时长的才可以按照播放进度来。是否是文件也不能通过是不是本地文件等来判 阅读全文
posted @ 2024-05-05 13:38 飞扬青云 阅读(299) 评论(0) 推荐(0)
摘要:一、前言 用ffmpeg采集本地摄像头,如果不指定格式的话,默认小分辨率比如640x480使用rawvideo格式,大分辨率比如1280x720使用mjpeg格式,当然前提是这个摄像头设备要支持这些格式。目前市面上有一些厂家做的本地设备支持264格式,这个压缩率极高,由于采集到的就是264格式的裸流 阅读全文
posted @ 2024-04-25 09:16 飞扬青云 阅读(737) 评论(0) 推荐(0)