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

摘要:一、前言 用ffmpeg做硬解码开发,参考自带的示例hw_decode.c即可,里面提供了通用的dxva2/d3d11va/vaapi这种系统层面封装的硬解码,也就是无需区分用的何种显卡,操作系统自动调度,基本上满足了各种场景的需要,这种方式很通用也便捷,但是一些特殊场景必须要用指定硬解码器名称的方 阅读全文
posted @ 2024-12-12 09:12 飞扬青云 阅读(202) 评论(0) 推荐(0) 编辑
摘要:一、前言 这个一边推流一边录制的功能,有很多用户提到过,之前因为时间的原因,一直没有搞,年初的时候索性抽空搞了下,也着实费了些功夫。推流用的是ffmpeg这个开源的牛逼的第三方库,搞音视频开发的人应该没人不认识这个库,养活了很多程序员以及厂家,甚至不乏一些大厂,如果能把ffmpeg搞精通,在国内拿个 阅读全文
posted @ 2024-11-11 16:45 飞扬青云 阅读(125) 评论(0) 推荐(0) 编辑
摘要:一、前言 随着直播的兴起,采集本地摄像头和麦克风进行直播推流,也是一个刚需,最简单的做法是直接用ffmpeg命令行采集并推流,这种方式简单粗暴,但是不能实时预览画面,而且不方便加上一些特殊要求。之前就已经打通了音视频文件和视频流的采集,那是不是可以简单点的方式就能直接加入到原有的框架中呢,答案是可以 阅读全文
posted @ 2024-08-24 18:21 飞扬青云 阅读(227) 评论(0) 推荐(0) 编辑
摘要:一、前言 目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;另一种是WebRTC协议的直播,这种直播方式使用UDP的 阅读全文
posted @ 2024-07-31 08:11 飞扬青云 阅读(424) 评论(0) 推荐(0) 编辑
摘要:一、前言 随着音视频的爆发式的增长,各种推拉流应用场景应运而生,基本上都要求各个端都能查看实时视频流,比如PC端、手机端、网页端,在网页端用websocket来接收并解码实时视频流显示,是一个非常常规的场景,单纯的http-flv模式受限于最大6个通道同时显示,一般会选择ws-flv也就是webso 阅读全文
posted @ 2024-07-23 08:01 飞扬青云 阅读(257) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章讲到用ffmpeg命令方式执行打印到日志输出,可以拿到本地摄像头设备信息,顺藤摸瓜,发现可以通过执行 ffmpeg -f dshow -list_options true -i video="Webcam" 命令获取指定摄像头设备的分辨率帧率格式等信息,会有很多条。那为什么需要这 阅读全文
posted @ 2024-07-07 09:17 飞扬青云 阅读(195) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以执行命令 ffmpeg -f dshow -list_devices true -i dummy 去 阅读全文
posted @ 2024-06-16 13:15 飞扬青云 阅读(48) 评论(0) 推荐(0) 编辑
摘要:一、前言 上一篇文章是写的用Qt的内置函数方式获取本地摄像头名称集合,但是有几个缺点,比如要求Qt5,或者至少要求安装了多媒体组件multimedia,如果没有安装呢,或者安装的是个空的呢,比如很多嵌入式板子,就算有multimedia组件,也是个空壳子,根本没有实际的功能,本身multimedia 阅读全文
posted @ 2024-06-04 11:54 飞扬青云 阅读(64) 评论(0) 推荐(0) 编辑
摘要:一、前言 在需要打开本地摄像头的场景中,有个需求绕不开,那就是如何获取本地有哪些摄像头设备名称,这样可以提供下拉框给用户选择,不然你让用户去填设备名,你觉得用户会知道是啥,他会操作吗?就算你提供了详细的查看步骤,估计也很难,如果用户是程序员还好,如果是电脑小白,鼠标都用不好,你还让他去找摄像头设备的 阅读全文
posted @ 2024-05-27 09:01 飞扬青云 阅读(80) 评论(0) 推荐(0) 编辑
摘要:一、前言 在使用yolo做人工智能运算后,运算结果除了一个方框,还可能需要增加文字显示在对应方框上,以便标记是何种物体,比如显示是人还是动物,或者还有可能追踪人员,显示该人员的姓名。这种应用场景非常普遍,而且非常有必要,可以非常直观的直接看到对应移动的物体是什么。当然也有个缺点,就是当图层方框特别多 阅读全文
posted @ 2024-05-18 09:48 飞扬青云 阅读(70) 评论(0) 推荐(0) 编辑
摘要:一、前言 视频监控系统发展到今天,越来越智能,比如这些年流行的人脸识别、物体识别、烟感识别等,都是需要拿到图片数据去做运算处理,然后将结果显示到视频画面中,或者还有要求将结果保存到视频录像文件中,以便打开回放查看。显示到画面中一般有两种方式,一种是通过滤镜的方式直接写入到图片视频数据中,一种是直接用 阅读全文
posted @ 2024-05-10 10:07 飞扬青云 阅读(129) 评论(0) 推荐(0) 编辑
摘要:一、前言 最近多了个新需求,需要倍速推流,推流界的扛把子obs也有倍速推流功能,最高支持到两倍速。这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放。实时视频流是不可能倍速的,因为没有时长,有时长的才可以按照播放进度来。是否是文件也不能通过是不是本地文件等来判 阅读全文
posted @ 2024-05-05 13:38 飞扬青云 阅读(187) 评论(0) 推荐(0) 编辑
摘要:一、前言 用ffmpeg采集本地摄像头,如果不指定格式的话,默认小分辨率比如640x480使用rawvideo格式,大分辨率比如1280x720使用mjpeg格式,当然前提是这个摄像头设备要支持这些格式。目前市面上有一些厂家做的本地设备支持264格式,这个压缩率极高,由于采集到的就是264格式的裸流 阅读全文
posted @ 2024-04-25 09:16 飞扬青云 阅读(420) 评论(0) 推荐(0) 编辑
摘要:一、前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中。其实这种切换只能说是取巧办法,最佳的办法应该是公用一个openglwidget窗体,解码线程那边开两个,第二个解码线程打开 阅读全文
posted @ 2024-04-18 09:50 飞扬青云 阅读(207) 评论(0) 推荐(0) 编辑
摘要:一、前言 用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw,将这个原始的音频流保存到mp4文件是会报错的,在调用avformat_wri 阅读全文
posted @ 2024-03-12 08:49 飞扬青云 阅读(210) 评论(0) 推荐(0) 编辑
摘要:一、前言 为什么需要判断视频文件是否含有B帧,这个在推流的时候很容易遇到这个问题,一般来说,没有B帧的视频文件,解码后的数据帧pts和dts都是顺序递增的,而有B帧的则未必,可能有些需要先解码后面显示,B帧也是双向预测图像B,对它的编码,即是对它前后帧的像素值之差进行编码,B帧是双向差别帧,也就是B 阅读全文
posted @ 2024-03-07 09:09 飞扬青云 阅读(82) 评论(0) 推荐(0) 编辑
摘要:一、前言 音视频组件除了支持保存MP4文件外,同时还支持保存裸流即264/265文件,以及解码后最原始的yuv文件。在实际使用过程中,会发现部分视频文件保存的裸流文件,并不能直接用播放器播放,查阅资料得知原来是缺少sps/pps信息,监控行业的rtsp/rtmp/录像mp4文件都是会带的,所以很少遇 阅读全文
posted @ 2024-03-03 08:48 飞扬青云 阅读(135) 评论(0) 推荐(0) 编辑
摘要:一、前言 之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput的采样率,可以规避这个问题,破音不在出现了,但是音调变了,倍速越大变得越快,人声越发不清晰,变得尖锐 阅读全文
posted @ 2024-02-03 09:32 飞扬青云 阅读(270) 评论(0) 推荐(0) 编辑
摘要:一、前言 近期收到一个用户需求,要求音视频组件能够切换声卡,首先要在vlc上实现,于是马不停蹄的研究起来,马上查阅对应vlc有没有自带的api接口,查看接口前,先打开vlc播放器,看下能不能切换,因为不是所有播放器都有这个功能,试了下vlc当然是可以的,这个是最基本的前提,如果连播放器本身都没有,那 阅读全文
posted @ 2024-02-01 10:22 飞扬青云 阅读(159) 评论(0) 推荐(0) 编辑
摘要:一、前言 共享解码线程主要是为了降低CPU占用,重复利用解码,毕竟在一个监控系统中,很可能打开了同一个地址,需要在多个不同的窗口中播放,形成多屏渲染的效果,做到真正的完全的画面同步,在主解码线程中切换了播放进度,所有关联的同一个解码线程的播放窗体也会立即同步画面,使得感官上看起来非常的舒服。 无论何 阅读全文
posted @ 2024-01-29 09:31 飞扬青云 阅读(115) 评论(0) 推荐(0) 编辑

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