随笔分类 -  Qt/C++音视频作品

摘要:一、前言 对各种音视频文件格式的支持,是一个播放器的基础功能。一般的音视频文件只有1路流,比如音频文件只有1路音频流,视频文件只有1路音频1路视频流,实践过程中发现,还有一种ts格式的文件,可能有多路流,这种格式一般是将多路节目流封装到一个文件中,用户可以根据自己的需要切换不同的节目,比如CCTV1 阅读全文
posted @ 2023-12-03 11:57 飞扬青云 阅读(88) 评论(0) 推荐(0) 编辑
摘要:一、前言 视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结构体参数的获取和设置单独提供了函数,参阅海康大华等大厂的sdk的设计方式,也是将众多的参数统一归类的 阅读全文
posted @ 2023-05-09 12:05 飞扬青云 阅读(65) 评论(0) 推荐(0) 编辑
摘要:一、前言 本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果不支持那就歇菜,比如设备本身最大分辨率到1280x720,你主动设置要采集1080x720分辨率的图 阅读全文
posted @ 2023-05-05 09:55 飞扬青云 阅读(267) 评论(0) 推荐(0) 编辑
摘要:一、前言 采集电脑屏幕桌面并推流一般是用来做共享桌面、远程协助、投屏之类的应用,最简单入门的做法可能会采用开个定时器或者线程抓图,将整个屏幕截图下来,然后将图片传出去,这种方式很简单但是性能要低不少,一般采用ffmpeg来做桌面推流的居多,毕竟如果不采用代码直接ffmpeg一行命令即可(ffmpeg 阅读全文
posted @ 2023-05-04 08:36 飞扬青云 阅读(485) 评论(0) 推荐(0) 编辑
摘要:一、前言 上次实现的文件推流,尽管优点很多,但是只能对现在存在的生成好的音视频文件推流,而现在更多的场景是需要将实时的视频流重新推流分发,用户在很多设备比如手机/平板/网页/电脑/服务器上观看,这样就可以很方便的将分散的视频流统一集中的流媒体服务器上,然后统一对外分发视频,而不是全部从设备端取流,大 阅读全文
posted @ 2023-04-29 09:31 飞扬青云 阅读(289) 评论(0) 推荐(0) 编辑
摘要:一、前言 本功能最初也是有一些人提过类似的需求,就是能不能将本地的音视频文件,通过纯Qt程序推流出去,然后用户可以直接在网页上播放,也可以用各种播放器播放,然后还可以任意切换播放进度,其实说白了就是个文件服务器,用户通过网络地址访问以后,告诉对方当前是媒体文件就会自动播放,是其他文件则可以开启下载, 阅读全文
posted @ 2023-04-27 09:15 飞扬青云 阅读(115) 评论(0) 推荐(0) 编辑
摘要:一、前言 之前用ffmpeg打通了各种视频文件和视频流以及本地摄像头设备的采集,近期有个客户需求要求将整个桌面屏幕采集下来,并可以录制保存成MP4文件,以前也遇到过类似的需求,由于没有搞过,也没有精力去摸索和测试,所以也就一直耽搁着,近期刚好这个需求又来了,定下心来试了试,原来非常简单,模式和采集本 阅读全文
posted @ 2023-04-24 17:05 飞扬青云 阅读(303) 评论(0) 推荐(0) 编辑
摘要:一、前言 采用海康的sdk做开发,最简单最容易的方式就是传入句柄(windows和linux都支持/很多人以为只有windows才支持)即可,这种方式不用自己处理绘制,全部交给了sdk去处理,所以cpu的占用是最低的;还有一种方式是回调函数拿到视频帧数据转成qimage绘制,这种方式优点很明显,能够 阅读全文
posted @ 2023-04-19 09:32 飞扬青云 阅读(330) 评论(0) 推荐(0) 编辑
摘要:一、前言 基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须是能够正常播放的连续的。vlc和mpv都只提 阅读全文
posted @ 2023-04-17 17:41 飞扬青云 阅读(107) 评论(0) 推荐(0) 编辑
摘要:一、前言 在和视频交互过程中,用户一般需要在显示视频的通道上点击对应的区域,弹出对应的操作按钮,将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合,发送出去,通知其他设备进行处理。比如识别到很多人脸,用户单击某个人脸后指定对该人脸进行详细的信息查询等;再比如圈出某个区域发给人工智能处理设备,对指 阅读全文
posted @ 2023-04-13 10:49 飞扬青云 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一、功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件。 实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。 可指定多种模式,0-直接播放、1-下载播放。 实时打印显示各种收发请求和应答数据。 每个文件对应MD5加密的唯一标识符,用于请求地址后缀区分 阅读全文
posted @ 2023-04-11 08:49 飞扬青云 阅读(55) 评论(0) 推荐(0) 编辑
摘要:一、前言 如果网络环境正常设备正常,视频监控系统一般都是按照正常运行下去,不会出现什么问题,但是实际情况会很不同,奇奇怪怪七七八八的问题都会出现,就比如网络出了问题都有很多情况(交换机故障、网线故障、带宽故障等),所以监控系统在运行过程中,还得做超时检测,超过规定的时间没有收到数据则认为掉线了,需要 阅读全文
posted @ 2023-04-10 09:40 飞扬青云 阅读(92) 评论(0) 推荐(0) 编辑
摘要:一、前言 视频文件一般会有两个声音通道及左右声道,值有时候一样有时候不一样,很多场景下我们需要对其分开计算不同的音量值,在QAudioFormat中可以获取具体有几个通道,如果是一个通道,则左右通道值设定一样,计算通道的音量值一般是对所有音量数据转换后累加后进行一个换算即可,在Qt的示例中就提供了这 阅读全文
posted @ 2023-04-07 08:38 飞扬青云 阅读(169) 评论(0) 推荐(0) 编辑
摘要:一、前言 做开发过程中难免遇到需要引入第三方库的时候,而且需要在不同库版本、不同系统、不同位数下都需要。第三方的库版本众多,一般在大版本中的小版本都是兼容的,但是大版本不兼容,比如ffmpeg目前就有1-6六个大版本,除去1几乎没人用那还剩5个大版本,目前主要还是4居多。vlc主要是vlc2和vlc 阅读全文
posted @ 2023-04-05 09:53 飞扬青云 阅读(78) 评论(0) 推荐(0) 编辑
摘要:一、前言 如果采用的vlc句柄模式,如果鼠标停留在句柄控件中会发现在打开后鼠标打圈圈,mpv句柄模式是在关闭后鼠标打圈圈,这两者真是一前一后,这种给人的体验其实很不友好的,播放开始后或者播放完成后鼠标指针居然变成了繁忙,但是当你将鼠标位置从句柄控件中移到外面的时候,他又会自动恢复,所以需要有个机制主 阅读全文
posted @ 2023-04-02 09:40 飞扬青云 阅读(85) 评论(0) 推荐(0) 编辑
摘要:一、前言 使用qmediaplayer来打开视频并播放,默认首选会采用QVideoWidget控件来展示,优点是不用自己来绘制,一切交给了QVideoWidget控件,这样可以做到极低的CPU占用,缺点也明显,就是无法拿到每一帧的图片,很多时候我们还需要主动拿到每一帧的图片来运算做人工智能,通过不断 阅读全文
posted @ 2023-03-31 13:15 飞扬青云 阅读(150) 评论(0) 推荐(0) 编辑
摘要:一、前言 在qt5中的多媒体框架明显比qt4丰富了很多,使用也极其友好,提供的api接口非常简单明了,不需要像qt4中那样还需要绑定和创建路径之类的。同样也还是依赖本地解码器,qt6中的多媒体框架据说重写了,性能暴增很多,后端还支持多种解码方式,比如可以选用ffmpeg作为后端解码,这样的话就统一起 阅读全文
posted @ 2023-03-29 09:08 飞扬青云 阅读(418) 评论(0) 推荐(0) 编辑
摘要:一、前言 在Qt4中如果需要播放视频,一般用phonon多媒体框架,这应该就是Qt5/Qt6中多媒体框架的前身(查阅qmultimedia模块的相关代码可以发现架构几乎雷同,除了部分命名变了以外),phonon多媒体框架本身也是没有内置解码器的,意味着用它实现的功能,依赖本地解码器,在windows 阅读全文
posted @ 2023-03-27 11:34 飞扬青云 阅读(131) 评论(0) 推荐(0) 编辑
摘要:一、前言 有了解码当然对应又有编码,编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的 阅读全文
posted @ 2023-03-25 20:26 飞扬青云 阅读(300) 评论(0) 推荐(0) 编辑
摘要:一、前言 一开始用ffmpeg做的是视频流的解析,后面增加了本地视频文件的支持,到后面发现ffmpeg也是支持本地摄像头设备的,只要是原则上打通的比如win系统上相机程序、linux上茄子程序可以正常打开就表示打通,整个解码显示过程完全一样,就是打开的时候要传入设备信息,而且参数那边可以指定分辨率和 阅读全文
posted @ 2023-03-24 11:11 飞扬青云 阅读(420) 评论(0) 推荐(0) 编辑

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