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

摘要:一、前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中。其实这种切换只能说是取巧办法,最佳的办法应该是公用一个openglwidget窗体,解码线程那边开两个,第二个解码线程打开 阅读全文
posted @ 2024-04-18 09:50 飞扬青云 阅读(333) 评论(0) 推荐(0)
摘要:一、前言 用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw,将这个原始的音频流保存到mp4文件是会报错的,在调用avformat_wri 阅读全文
posted @ 2024-03-12 08:49 飞扬青云 阅读(322) 评论(0) 推荐(0)
摘要:一、前言 为什么需要判断视频文件是否含有B帧,这个在推流的时候很容易遇到这个问题,一般来说,没有B帧的视频文件,解码后的数据帧pts和dts都是顺序递增的,而有B帧的则未必,可能有些需要先解码后面显示,B帧也是双向预测图像B,对它的编码,即是对它前后帧的像素值之差进行编码,B帧是双向差别帧,也就是B 阅读全文
posted @ 2024-03-07 09:09 飞扬青云 阅读(131) 评论(0) 推荐(0)
摘要:一、前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件。在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料得知原来是缺少sps/pps信息,监控行业的rtsp/rtmp/录像mp4文件都是会带的,所以很少遇 阅读全文
posted @ 2024-03-03 08:48 飞扬青云 阅读(273) 评论(0) 推荐(0)
摘要:一、前言 之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput的采样率,可以规避这个问题,破音不在出现了,但是音调变了,倍速越大变得越快,人声越发不清晰,变得尖锐 阅读全文
posted @ 2024-02-03 09:32 飞扬青云 阅读(408) 评论(0) 推荐(0)
摘要:一、前言 近期收到一个用户需求,要求音视频组件能够切换声卡,首先要在vlc上实现,于是马不停蹄的研究起来,马上查阅对应vlc有没有自带的api接口,查看接口前,先打开vlc播放器,看下能不能切换,因为不是所有播放器都有这个功能,试了下vlc当然是可以的,这个是最基本的前提,如果连播放器本身都没有,那 阅读全文
posted @ 2024-02-01 10:22 飞扬青云 阅读(237) 评论(0) 推荐(0)
摘要:一、前言 共享解码线程主要是为了降低CPU占用,重复利用解码,毕竟在一个监控系统中,很可能打开了同一个地址,需要在多个不同的窗口中播放,形成多屏渲染的效果,做到真正的完全的画面同步,在主解码线程中切换了播放进度,所有关联的同一个解码线程的播放窗体也会立即同步画面,使得感官上看起来非常的舒服。 无论何 阅读全文
posted @ 2024-01-29 09:31 飞扬青云 阅读(168) 评论(0) 推荐(0)
摘要:一、前言 设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,一些早期的播放器可能播放的时候是躺着的,因为早期播放器设计的时候,手机还没有流行,也没有考虑这种需求, 阅读全文
posted @ 2024-01-08 09:24 飞扬青云 阅读(227) 评论(0) 推荐(0)
摘要:一、前言 电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果,然后查阅滤镜手册过程中,发现有个裁剪crop的滤镜,和要做的电子放大效果完全一样,就是将指定的某个区域放大显示 阅读全文
posted @ 2023-12-29 09:08 飞扬青云 阅读(142) 评论(0) 推荐(0)
摘要:一、前言 多屏渲染就是一个解码线程对应多个渲染界面,通过addrender这种方式添加多个绘制窗体,我们经常可以在展会或者卖电视机的地方可以看到很多电视播放的同一个画面,原理应该类似,一个地方负责打开解码播放,将画面同步传输到多个显示的地方,完全保证了画面的一致性。这样相当于复用了解码,极大的降低了 阅读全文
posted @ 2023-12-26 10:19 飞扬青云 阅读(255) 评论(0) 推荐(0)
摘要:一、前言 通过在通道画面上拾取鼠标按下的坐标,然后鼠标移动,直到松开,根据松开的坐标和按下的坐标,绘制一个矩形区域,作为热点或者需要电子放大的区域,拿到这个坐标区域,用途非常多,可以直接将区域中的画面放大,也可以将该圈起来的区域位置发给设备,由设备设定对应的热点区域作为集中观察点,可以用来人工智能分 阅读全文
posted @ 2023-12-17 09:31 飞扬青云 阅读(97) 评论(0) 推荐(0)
摘要:一、前言 最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C++,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概是在V0.23版本,大部分软件发布基本上都是在1.0版本才是 阅读全文
posted @ 2023-12-11 08:37 飞扬青云 阅读(359) 评论(0) 推荐(0)
摘要:一、前言 逐帧播放是近期增加的功能,之前也一直思考过这个功能该如何实现,对于mdk/qtav等内核组件,可以直接用该组件提供的接口实现即可,而对于ffmpeg,需要自己处理,如果有缓存的数据的话,可以通过在缓存中的数据往前移动往后移动即可。这样就要求做一个比较大的缓存队列,占用一定的内存是肯定的。为 阅读全文
posted @ 2023-12-08 09:33 飞扬青云 阅读(565) 评论(0) 推荐(0)
摘要:一、前言 1.1 功能特点 支持各种本地视频文件和网络视频文件。 支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。 支持将本地摄像头设备推流,可指定分辨率和帧率等。 支持将本地桌面推流,可指定屏幕区域和帧率等。 自动启动流媒体服务程序,默认mediamtx(原rtsp-simp 阅读全文
posted @ 2023-10-08 15:00 飞扬青云 阅读(760) 评论(0) 推荐(0)
摘要:一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流,其中udp推流还可以是组播或者单播推流,组播一般会 阅读全文
posted @ 2023-09-25 10:35 飞扬青云 阅读(1079) 评论(0) 推荐(0)
摘要:一、前言 为了保证视频文件的安全性,有时候需要对保存的视频文件加密,然后播放的时候解密出来再播放,只有加密解密的秘钥一致时才能正常播放,用ffmpeg做视频文件的加密保存和解密播放比较简单,基于ffmpeg强大的字典参数设计,在avformat_write_header写入头部数据的时候,可以通过万 阅读全文
posted @ 2023-09-20 08:17 飞扬青云 阅读(342) 评论(0) 推荐(0)
摘要:一、前言 跌跌撞撞摸爬滚打一步步迭代完善到今天,这个视频监控控件的设计,在现阶段水平上个人认为是做的最棒的(稍微自恋一下),理论上来说应该可以用5年不用推翻重写,推翻重写当然也是程序员爱干的事情,这个就要考验个人的功底,设计的好框架搭建的好,可以很多年不用变,只需要在现有框架小修小补即可,最多就是继 阅读全文
posted @ 2023-09-17 09:16 飞扬青云 阅读(114) 评论(0) 推荐(0)
摘要:一、前言 编写这个推流程序,最开始设计的时候是用视频文件推流,后面陆续增加了监控摄像头推流(其实就是rtsp视频流)、网络电台和视频推流(一般是rtmp或者http开头m3u8结尾的视频流)、本地摄像头推流(本地USB摄像头或者笔记本自带摄像头等)、桌面推流(将当前运行环境的系统桌面抓拍推流)。按照 阅读全文
posted @ 2023-09-15 08:54 飞扬青云 阅读(318) 评论(0) 推荐(0)
摘要:一、前言 最开始设计的时候,只考虑了一个屏幕的情况,这种当然是最理想的情况,实际上双屏或者多屏的用户也不在少数,比如我这两个屏幕,屏幕1是1080P,屏幕2是2K分辨率,打印两个屏幕的区域是 QRect(0,0 1920x1030), QRect(1920,-208 2560x1390),可以看到有 阅读全文
posted @ 2023-09-12 08:51 飞扬青云 阅读(213) 评论(0) 推荐(0)
摘要:## 一、前言 最近将推流程序完善了很多功能,尤其是增加了对多种流媒体服务程序的支持,目前支持mediamtx、LiveQing、EasyDarwin、nginx-rtmp、ZLMediaKit、srs、ABLMediaServer等,其中经过大量的对比测试,个人比较建议使用mediamtx和ZLM 阅读全文
posted @ 2023-09-05 08:15 飞扬青云 阅读(252) 评论(0) 推荐(0)