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

摘要:一、前言 设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,一些早期的播放器可能播放的时候是躺着的,因为早期播放器设计的时候,手机还没有流行,也没有考虑这种需求, 阅读全文
posted @ 2024-01-08 09:24 飞扬青云 阅读(129) 评论(0) 推荐(0) 编辑
摘要:一、前言 电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果,然后查阅滤镜手册过程中,发现有个裁剪crop的滤镜,和要做的电子放大效果完全一样,就是将指定的某个区域放大显示 阅读全文
posted @ 2023-12-29 09:08 飞扬青云 阅读(82) 评论(0) 推荐(0) 编辑
摘要:一、前言 多屏渲染就是一个解码线程对应多个渲染界面,通过addrender这种方式添加多个绘制窗体,我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面,原理应该类似,一个地方负责打开解码播放,将画面同步传输到多个显示的地方,完全保证了画面的一致性。这样相当于复用了解码,极大的降低了 阅读全文
posted @ 2023-12-26 10:19 飞扬青云 阅读(145) 评论(0) 推荐(0) 编辑
摘要:一、前言 通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多,可以直接将区域中的画面放大,也可以将该圈起来的区域位置发给设备,由设备设定对应的热点区域作为集中观察点,可以用来人工智能分 阅读全文
posted @ 2023-12-17 09:31 飞扬青云 阅读(48) 评论(0) 推荐(0) 编辑
摘要:一、前言 最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C++,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概是在V0.23版本,大部分软件发布基本上都是在1.0版本才是 阅读全文
posted @ 2023-12-11 08:37 飞扬青云 阅读(224) 评论(0) 推荐(0) 编辑
摘要:一、前言 逐帧播放是近期增加的功能,之前也一直思考过这个功能该如何实现,对于mdk/qtav等内核组件,可以直接用该组件提供的接口实现即可,而对于ffmpeg,需要自己处理,如果有缓存的数据的话,可以通过在缓存中的数据往前移动往后移动即可。这样就要求做一个比较大的缓存队列,占用一定的内存是肯定的。为 阅读全文
posted @ 2023-12-08 09:33 飞扬青云 阅读(359) 评论(0) 推荐(0) 编辑
摘要:一、前言 1.1 功能特点 支持各种本地视频文件和网络视频文件。 支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。 支持将本地摄像头设备推流,可指定分辨率和帧率等。 支持将本地桌面推流,可指定屏幕区域和帧率等。 自动启动流媒体服务程序,默认mediamtx(原rtsp-simp 阅读全文
posted @ 2023-10-08 15:00 飞扬青云 阅读(532) 评论(0) 推荐(0) 编辑
摘要:一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流,其中udp推流还可以是组播或者单播推流,组播一般会 阅读全文
posted @ 2023-09-25 10:35 飞扬青云 阅读(834) 评论(0) 推荐(0) 编辑
摘要:一、前言 为了保证视频文件的安全性,有时候需要对保存的视频文件加密,然后播放的时候解密出来再播放,只有加密解密的秘钥一致时才能正常播放,用ffmpeg做视频文件的加密保存和解密播放比较简单,基于ffmpeg强大的字典参数设计,在avformat_write_header写入头部数据的时候,可以通过万 阅读全文
posted @ 2023-09-20 08:17 飞扬青云 阅读(258) 评论(0) 推荐(0) 编辑
摘要:一、前言 跌跌撞撞摸爬滚打一步步迭代完善到今天,这个视频监控控件的设计,在现阶段水平上个人认为是做的最棒的(稍微自恋一下),理论上来说应该可以用5年不用推翻重写,推翻重写当然也是程序员爱干的事情,这个就要考验个人的功底,设计的好框架搭建的好,可以很多年不用变,只需要在现有框架小修小补即可,最多就是继 阅读全文
posted @ 2023-09-17 09:16 飞扬青云 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一、前言 编写这个推流程序,最开始设计的时候是用视频文件推流,后面陆续增加了监控摄像头推流(其实就是rtsp视频流)、网络电台和视频推流(一般是rtmp或者http开头m3u8结尾的视频流)、本地摄像头推流(本地USB摄像头或者笔记本自带摄像头等)、桌面推流(将当前运行环境的系统桌面抓拍推流)。按照 阅读全文
posted @ 2023-09-15 08:54 飞扬青云 阅读(226) 评论(0) 推荐(0) 编辑
摘要:一、前言 最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRect(0,0 1920x1030), QRect(1920,-208 2560x1390),可以看到有 阅读全文
posted @ 2023-09-12 08:51 飞扬青云 阅读(170) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和ZLM 阅读全文
posted @ 2023-09-05 08:15 飞扬青云 阅读(194) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 ffmpeg的版本众多,从2010年开始计算的项目的话,基本上还在使用的有ffmpeg2/3/4/5/6,最近几年版本彪的比较厉害,直接4/5/6,大版本之间接口有一些变化,特别是一些废弃接口被彻底删除了,而网络上的各种文章几乎都是ffmpeg3左右为主的,所以本人在写这个全功能播放 阅读全文
posted @ 2023-07-30 10:32 飞扬青云 阅读(642) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 近期遇到个用户需要多级联的保存和推流,在ffmpegsave多线程保存类中实现这个功能,越简单越好,就是在推流的同时,能够开启自动转储功能,一边推流的同时一边录像保存到本地视频文件。最初设想的一个方案是new两个ffmpegsave类,一个专门推流,一个专门录像,可以肯定是可以,但是 阅读全文
posted @ 2023-07-25 09:35 飞扬青云 阅读(183) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也没用,而且打印了ffmpeg库协议,也是支持的,以为用对应的命令行测试推流到rtsp流媒体服务 阅读全文
posted @ 2023-07-20 12:23 飞扬青云 阅读(578) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 近期花了两周时间闭门啃硬骨头,主要就解决三个问题(音视频同步存储和推流、图片水印并将水印信息存储到文件或者推流、rtsp推流),这三个问题困扰了很多年,以至于找遍了网络和翻遍ffplay代码以及ffmpeg示例的代码,通过不下于上百次方案的调整和测试,几乎每次都是在接近崩溃的时候,灵 阅读全文
posted @ 2023-07-17 13:52 飞扬青云 阅读(202) 评论(0) 推荐(0) 编辑
摘要:## 一、前言 用ffmpeg单独做视频保存不难,单独做音频保存也不难,难的是音视频同步保存到MP4中,重点是音视频要同步,其实这也不难,只要播放那边音视频同步后的数据,写入到文件即可。最难的是在播放过程中不断随机的切换播放进度,而且还会暂停播放、暂停录制的情况出现,这些个复杂情况的出现,可以说,测 阅读全文
posted @ 2023-07-12 09:45 飞扬青云 阅读(688) 评论(0) 推荐(0) 编辑
摘要:一、前言 花了一年多的时间,终于把这个超级播放器做成了自己想要的架构,用户的需求是一方面,自己架构方面的提升也是一方面,最主要是将界面和解码解耦了,这样才能动态的挂载不同的解码内核到不同的视频监控窗体,多对多关系,而且解耦和才能方便的实现共享解码,整个设计参照了Qt的设计思路,将各种功能做成不同的类 阅读全文
posted @ 2022-12-08 13:46 飞扬青云 阅读(840) 评论(0) 推荐(0) 编辑
摘要:一、前言 和音频存储类似,视频的存储也对应三种格式,视频最原始的数据是yuv(音频对应pcm),视频压缩后的数据是h264(音频对应aac),由于很多播放器或者早期的播放器不支持直接播放h264文件,所以需要用编码器编码成mp4格式,这块就需要用到ffmpeg里面一整套的编码流程,对yuv数据进行编 阅读全文
posted @ 2022-12-06 09:27 飞扬青云 阅读(1394) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示