音视频
土拨鼠不是老鼠
这个作者很懒,什么都没留下…
展开
-
基于Orangepi 3 lts 的云台相机
利用orangepi 3 lts 和arduino nano 制作了一个云台相机,可用于室内监控。orangepi 3 ,arduino nano ,usb相机,180度舵机两个。云台利用c语言对舵机机进行角度控制,并使用串口与orangepi 进行交互。相机采用python 利用opencv进行取图。前端采用vue3 对mqtt消息进行接收和发送。整体采用mqtt进行消息的中转。原创 2023-08-06 21:43:09 · 975 阅读 · 0 评论 -
利用GStreamer 解析RTSP视频流,并保存cv::Mat
硬解码rtsp视频流,并封装成opencv Mat,供后续使用。原创 2023-03-10 09:15:02 · 1435 阅读 · 0 评论 -
利用GSteamer 将cv::Mat 编码h264,并使用websocket发送
cv::Mat 编码h264数据包,并利用websocket发送,html端进行h264解析并使用wegl渲染。原创 2023-03-09 13:25:58 · 408 阅读 · 0 评论 -
利用GStreamer 将cv::Mat 硬编码成h264文件
采集工业相机图片 ,h264编码,之后保存到h264文件。原创 2023-03-08 09:00:11 · 754 阅读 · 0 评论 -
web端 无插件 实时视频预览
最近又发现一种方案,利用websocket协议,服务端将h264裸流发送给web,web利用js进行解码,然后用webgl进行渲染,经测试效果特别好,又省去了多余的服务。2,将视频转成hls或者flv又或者webrtc 等浏览器支持的协议。但是这个需要服务端进行转换,用过webrtc协议,效果很好,延时很低。1,客户端安装ocx插件,浏览器调用插件进行解码,渲染。但是浏览器支持有限,只有ie支持,并且还要安装插件,稍嫌麻烦。项目需要在web上对相机采集的图片进行编码成视频,然后进行实时预览。原创 2022-12-10 10:23:23 · 1017 阅读 · 0 评论 -
利用ffmpeg 从RTSP流 取rgb图
一,思路拉rtsp视频流-》解析出yuv frame->转成 rgb mat子线程 负责解析 yuc frame,转rgb mat 并存入一个队列主线程一共一个 取图的接口,调用时从队列取出一个mat二,代码三,测试原创 2022-12-06 16:38:10 · 873 阅读 · 0 评论 -
h264 error while decoding MB/concealing 215 DC... 错误解决方案
利用ffmpeg从rtsp视频流中解码h264,之后编码mjpeg给到算法推理。同时还要发送到rtmp服务器进行预览。在解码h264的时候会卡住不动,经查大部分的人说法是丢包导致视频帧错误,从而解码错误,并且在解码慢,读取rtsp视频快的情况下会发生阻塞,也会导致这个问题。解决办法就是采用多线程,rtsp流读取视频帧,解码h264,发送rtmp服务器为一个线程。mjpeg编码为另一个线程。线程间用队列进行frame的传送。...原创 2022-07-26 13:07:47 · 9280 阅读 · 0 评论 -
用flutter 写一个电视应用
一,场景家里买了一台小米电视,回去打开一看,就是一个安卓系统,内置的节目除了广告就是让买会员。我就想简简单单的看个电视,不想看广告,因为之前用qt+ubuntu做过电视盒子,那为何不参照以往的思路做个电视app呢。二,原型功能要足够简单,就是要找到当年看熊猫牌 电视的感觉,进入后首先就是默认的央视1,菜单可打开列表选择频道,遥控器上下键默认切换频道。三,实现思路1,频道列表 开始考虑的是保存到本地json文件中,但是问题是 这种直播的地址有可能会更换,并且如果自己想再加入其它频.原创 2021-04-24 13:46:20 · 3319 阅读 · 5 评论 -
基于声网SDK的双师授课系统开发
"领导,现在您看到的就是使用了声网SDK达到的效果,目前是1080p 60帧,16路视频,cpu占用不到30%。"“效果不错么,有种身临其境的感觉。”领导满意的点了点了头。“达到这个效果,还挺不容易的。”“不会吧,SDK不是现成的么,集成进去不就可以了?”领导睁大他的小眼睛看着我,眉宇间透漏着不相信。“SDK是现成的,但声网没有现成的解决方案,因为我们的业务比较特殊,听我给您慢慢道来......”"keiler,今天你第一天入职,我先给你讲下我们的业务场景,我们主要的业务是双师课堂.原创 2021-03-02 11:56:52 · 281 阅读 · 0 评论 -
旧手机利用(flutter+声网RTC+声网RTM)
一,背景旧手机除了卖钱能干嘛呢?一个集成度这么高的微型电脑其实能干好多事情,比如做个监控工具。二,方案1,开发两个app,分为主控端和终端。终端app负责摄像头和麦克风数据的采集,主控端app负责控制所有终端设备,可打开和关闭任意设备的摄像头和麦克风。2,音视频传输部分采用声网 RTC,信令控制使用声网RTM。终端app 初始时加入一固定频道A,主控app初始时也加入固定频道 A,之后获取频道内成员列表。然后选中需要查看的用户,发送打开设备指令,同时自己调用RTC加入一固定频道B。.原创 2020-09-22 17:09:20 · 1558 阅读 · 3 评论 -
音视频开发,到底开发个啥------从一部羞羞小电影说起
突如其来的疫情让在线会议和在线教育一下子进入了大众的视野,原本默默耕耘的一些To D类公司,直接在风口飞了起来,一直飞到了纳斯达克,比如声网。随着而来的就是音视频开发领域的火爆,那音视频开发到底开发个啥呢?让我们先从一部小电影说起。 遥想当年,大学宿舍,美好的周末,室友们都相约和女朋友去学校周边的肮脏小旅馆探究人体的奥秘,留下你一个人在宿舍里寂寞,你打开电脑,找到隐藏在N个文件下的 一个mp4文件,双击之后,一股东京的热浪,迎面扑来。其中既有苍老师舞动的身姿...原创 2020-09-16 23:51:16 · 1654 阅读 · 0 评论 -
Qt+ffmpeg+jetson nano 自制网络机顶盒
一,背景现在的电视基本都是智能电视,直接从网络获取资源,并且受众以老年人居多。但是软件设计上难免都存在一些问题,当然这些问题由于商业原因不可避免。比如, 操作太过繁琐,功能太多。 广告到处都是。收费节目太多。 对于习惯了传统电视的人来说,无疑是种负担,我只想换个台,看个节目而已。 比如下边这些:所以呢,我就计划自己做个电视盒子,给习惯了传统电视的老娘使用。二,软件Quick + ffmpeg(1),界面框架采用Quick 搭建。只设计两个首页,首页用于频道展示...原创 2020-09-08 10:55:45 · 3891 阅读 · 9 评论 -
利用 QWidget 进行声网SDK渲染
场景:qt quick 布局很灵活,想叠加窗口也很简单,但是想渲染视频 必须借助opengl 。可是部分音视频厂商提供的sdk 在自渲染层面 性能会有所下降,这就不得不选择传统的 QWidget 进行sdk渲染。一,效果二,QWidget 布局分为两种。(1),运用layout ,自动布局(2),利用setGeometry(x,y,width,height); 手动计算位置,利用lower() 或者raise() 来调整层级三,单窗口代码参考:https://b...原创 2020-08-20 17:25:44 · 409 阅读 · 0 评论 -
golive 直播服务器安装
安装 golive 直播服务器一,源码 下载https://github.com/gwuhaolin/livego/blob/master/README_cn.md二,vscode 编译https://www.jianshu.com/p/f952042af8ff三,生成推流地址启动服务:执行livego二进制文件启动 livego 服务; 访问http://localhost:8090/control/get?room=movie obs 配置四,vl...原创 2020-06-27 10:49:43 · 2745 阅读 · 0 评论 -
QML webengine 编译 (支持 h.264协议)
Qt 官方Webenginge 不支持h.264协议,无法播放 h.264协议的视频。一,参考 文档:https://stackoverflow.com/questions/50510457/how-to-compile-qt-webengine-5-11-on-windows-with-proprietary-codecs/安装时,选择安装源码二,安装python2 ,python3 不好用三,我的版本是 qt5.10.1 +vs2015 。 并编译...原创 2020-05-29 14:48:31 · 702 阅读 · 0 评论 -
ffmpeg 命令分类
ffmpeg 常用命令分类 整理:基本信息查询 录制命令 分解/复用 处理原始数据 裁剪与合并 图片视频互转 直播相关 各种滤镜一,基本信息查询二,录制1.基于GDI录屏,FFmpeg直接从Windows的GDI中拷贝图形,然后再合成视频。优点:省事,不需要依赖其他库缺点:内存拷贝性能不是很好,没有硬件加速命令如下:ffmpeg -y -f gdigr...原创 2020-02-23 12:14:38 · 516 阅读 · 1 评论 -
QML 播放器(vlc-Qt 和QtAV 两种方式)
需求:教师上课,学生利用PC端 进行观看效果:1,首页 即登录页,包括扫码登录与账号密码登录2,视频页 视频展示,并在视频上叠加 常用工具栏实现:1,利用vlc-qt 和qml 实现客户端,用户用手机扫码直接登录观看2,vlc-qthttps://github.com/vlc-qt3,工程配置LIBS += -LE:\vlc-...原创 2020-02-10 16:59:05 · 2727 阅读 · 0 评论 -
Qt QWidget视频上叠加文字
需求:在调用其它音视频SDK的时候,在windows上一般会传入一个 winId 控件来显示视频,这个winID在Qt中一般是QWidget。目前想在这个视频上 显示一些提示信息,比如视频源的名字。一,曾尝试过的几种方案在视频源上写入:(1),利用opencv ,将原始yuv数据 转成mat,然后利用opencv的内置函数,绘制文字。不过这样的缺点是,引入了第三方库并且耗费大量cpu...原创 2019-12-23 16:05:30 · 4768 阅读 · 7 评论 -
实时音视频 质量测试
在对实时音视频的质量进行测试时,通常可以关注以下几个指标:1,流畅度主要受帧率(FPS)的影响。帧率:画面每秒传输的帧数,每秒钟显示的帧数愈多,所显示的动作就越流程。2,清晰度单位面积的画面所承载的信息。当帧率和分辨率固定时,主要受码率的影响码率:比特率,每秒传送的比特数。3,分辨率对视频大小和画质有着非常重要的影响。如果清晰度和流畅度不变,分辨率与...原创 2019-11-19 18:53:25 · 2774 阅读 · 0 评论 -
基于声网 视频通话SDK 的opencv 人脸检测
目前在用声网的 视频通话SDK 制作一款会议系统软件,将来可能要加入人脸的一些操作,因此就想到了opencv,并且声网SDK 也提供了原始的视频帧 回调函数,所以在此基础上集成opencv 是可以的。 主要的操作就是基于yuv420p 和 Mat类型的转换。1,获取声网 原始视频帧 YUV420P数据.virtual bool onCaptureVideoFram...原创 2019-11-08 16:12:17 · 353 阅读 · 0 评论 -
OBS 源添加 底层逻辑
1,OBSBasic.ui 主界面sourcesDock->工具栏上有 五个按钮,分别对应源的 添加,删除,设置,上移,下移2, window-basic-main.hpp 中,定义了槽(这些action采用了默认的槽,所以看不到connect)//上移void OBSBasic::on_actionSourceUp_triggered(){ OBSSceneIt...原创 2019-08-07 20:12:09 · 949 阅读 · 0 评论 -
OBS 文本(GDI+) 底层逻辑
一,GDI+(obs编译说明:https://github.com/obsproject/obs-studio/wiki/Install-Instructions#windows-build-directions)此插件主要用GDI+ 进行文字的绘制GDI+是微软提供的新的图形设备接口,通过托管代码的类来展现。GDI+主要提供了三类服务:二维矢量图形 图像处理 文字显示...原创 2019-08-07 21:04:46 · 1544 阅读 · 0 评论 -
phabricator 公钥、秘钥使用
一,公钥秘钥的理解首先需要理解公钥秘钥到底是什么,其实可以这样理解,公钥就相当于一把锁,秘钥就相当于开这把所的钥匙。生成的公钥要传到服务器端为其上一把锁,而秘钥需要自己拿着,以后提交代码的时候,git会自动通过电脑里面的私钥来打开服务器的那个公钥,然后才允许提交。二,生成公钥和秘钥钥匙和锁一般是一块生成的,因此可以分别在服务器端(phabricator端)和本地生成,如果在服务器端生成...原创 2019-08-15 14:03:00 · 1111 阅读 · 0 评论 -
OBS 编译
参考:https://github.com/obsproject/obs-studio/wiki/Install-Instructions#windows-build-directions32位1,下载 代码git clone --recursive https://github.com/obsproject/obs-studio.git2,下载依赖https://obspr...原创 2019-08-20 20:35:48 · 280 阅读 · 0 评论 -
CMake 使用
一,先说说makefile文件 什么是makefile文件?一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动...原创 2019-08-12 14:23:47 · 463 阅读 · 0 评论 -
软件版本控制
软件版本控制目前存在很多标准,甚至每个公司都有自己的一套标准。目前比较流行的是github提出来的一套标准。语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号...原创 2019-08-27 10:40:54 · 1704 阅读 · 2 评论 -
OBS 实现强制升级功能
一,要实现的效果版本更新后发布最新的OBS版本 到阿里云 用户端打开OBS时,强制让用户从阿里云更新最新版本二,OBS升级 底层逻辑三,修改的地方win-update.cpp//升级 线程void AutoUpdateThread::run()try { long responseCode; vector<string> extr...原创 2019-09-02 15:58:33 · 2160 阅读 · 7 评论 -
webRTC windows 编译
1,vs 版本 2015 Update 32,Windows SDK 版本Windows 10 SDK (10.0.10586) https://developer.microsoft.com/en-us/windows/downloads/sdk-archive3,python 2.7备注:需添加到环境变量PATH 中4,安装 depot...原创 2020-10-24 13:54:48 · 548 阅读 · 0 评论 -
OBS 增加人脸特效插件
将开源人脸特效插件facemask-plugin 添加到obs中一,效果如下二,下载facemask-plugin 并编译地址:https://github.com/stream-labs/facemask-pluginfacemask所有的面具都是通过json文件保存,可以从官网上下载然后保存到本地使用。如果需要添加自己的面具,则需要制作三维模型,然后利用插件下的转换工具自...原创 2019-09-25 18:09:38 · 20930 阅读 · 9 评论 -
OBS 打包
利用QBS 自带的nsis脚本进行软件打包一,下载venis 软件,进行nsi文件编辑http://www.spaceblue.com/products/venis/二,下载OBS 专用于打包的dll 并放在NSIS安装路径下,如:https://r-1.ch/OBSInstallerUtils.dll三,下载OBS 脚本https://github.co...原创 2019-09-26 13:54:45 · 1371 阅读 · 1 评论 -
Qt 采集麦克风PCM数据并实时翻译
一,需求采集麦克风PCM数据,并利用有道实时语音翻译API进行显示(1),麦克风数据采集(2),调用有道API进行实时翻译二,数据采集根据有道 接口要求,数据采样率8k、16bit、wav(PCM编码)(https://irma.youdao.com/html/%E5%AE%9E%E6%97%B6%E8%AF%AD%E9%9F%B3%E7%BF%BB%E8%AF%91/API...原创 2019-08-09 13:35:12 · 4431 阅读 · 8 评论