门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
开放区(网友自由发帖区)
›
项目作品
›
Qt音视频开发19-海康sdk录像存储
发布主题
返回列表
Qt音视频开发19-海康sdk录像存储
0
回复
4371
查看
[复制链接]
liudianwu
当前离线
积分
2616
liudianwu
累计签到:7 天
连续签到:1 天
来源:
2020-8-27 10:05:49
显示全部楼层
|
阅读模式
## 一、前言
关于调用海康sdk来进行录像存储,整体的框架架构处理流程沿袭了之前vlc内核、ffmpeg内核、mpv内核的做法,定时存储这块,开个定时器判断,到了时间则先关闭原来的录像存储,然后在开始一个新的录像存储,重新传入新的文件名,所以这块的代码直接拷贝过来就能使用,要做的就是替换两行代码即可,一行是开始录像存储的函数NET_DVR_SaveRealData,一行是停止录像存储的函数NET_DVR_StopSaveRealData,海康sdk的手册非常详细,而且命名也比较规范,基本上通过方法函数名字就可以知道大概的意思了,不用去猜测。
和录像存储功能同一大类的还有个截图功能,这个在vlc内核、ffmpeg内核、mpv内核这些内核中都实现了,截图总结了三种,第一种是句柄模式下的截图,这个需要调用相关sdk的函数去执行,分辨率大小为原图;第二种是回调模式下的截图,这个已经拿到了图片的数据,直接取窗体对应保存的视频的图片即可,分辨率大小为原图;第三种是窗体的截屏,就是当前视频窗体来个截屏,分辨率大小为当前窗体的尺寸;
关于打开视频文件、录像存储、截图保存这三个功能,要特别注意中文路径,当然如果是只有英文路径那就无需做任何处理,但是对于国人使用来说,中文路径肯定是避免不了的,有两种可能的需要的处理,一个是路径要转成utf8格式,还有一种是要用QTextCodec指定gb2312格式重新转一下路径才能生效,比如海康sdk内核下,不然很可能路径失效。
## 二、功能特点
1. 支持播放视频流和本地MP4文件。
2. 支持句柄和回调两种模式。
3. 多线程显示图像,不卡主界面。
4. 自动重连网络摄像头。
5. 可设置边框大小即偏移量和边框颜色。
6. 可设置是否绘制OSD标签即标签文本或图片和标签位置。
7. 可设置两种OSD位置和风格。
8. 可设置是否保存到文件以及文件名。
9. 可直接拖曳文件到haikangwidget控件播放。
10. 支持h264/h265视频流。
11. 可暂停播放和继续播放。
12. 支持存储单个视频文件和定时存储视频文件。
13. 自定义顶部悬浮条,发送单击信号通知,可设置是否启用。
14. 可设置画面拉伸填充或者等比例填充。
15. 可设置解码是速度优先、质量优先、均衡处理。
16. 可对视频进行截图(原始图片)和截屏(视频窗体)。
17. 录像文件存储为MP4文件。
18. 支持焦距控制、云台控制。
19. 可定制功能。
## 三、效果图
## 四、相关站点
1. 国内站点:[
https://gitee.com/feiyangqingyun/QWidgetDemo
](
https://gitee.com/feiyangqingyun/QWidgetDemo
)
2. 国际站点:[
https://github.com/feiyangqingyun/QWidgetDemo
](
https://github.com/feiyangqingyun/QWidgetDemo
)
3. 个人主页:[
https://blog.csdn.net/feiyangqingyun
](
https://blog.csdn.net/feiyangqingyun
)
4. 知乎主页:[
https://www.zhihu.com/people/feiyangqingyun/
](
https://www.zhihu.com/people/feiyangqingyun/
)
5. 体验地址:[
https://blog.csdn.net/feiyangqingyun/article/details/97565652
](
https://blog.csdn.net/feiyangqingyun/article/details/97565652
)
## 五、核心代码
```c++
void HaiKangThread::initSave()
{
if (!saveFile || !isRtsp) {
return;
}
if (saveInterval == 0) {
saveVideo(fileName);
}
}
void HaiKangThread::saveVideo()
{
if (!saveFile || !isRtsp) {
return;
}
//重新设置文件名称
QString dirName = QString("%1/%2").arg(savePath).arg(QDATE);
newDir(dirName);
fileName = QString("%1/%2_%3.mp4").arg(dirName).arg(fileFlag).arg(STRDATETIME);
saveVideo(fileName);
}
void HaiKangThread::saveVideo(const QString &fileName)
{
if (hand >= 0) {
//转码以便支持中文路径
QTextCodec *codec = QTextCodec::codecForName("gb2312");
QByteArray data = codec->fromUnicode(fileName);
//先停止再设置
NET_DVR_StopSaveRealData(hand);
NET_DVR_SaveRealData(hand, data.data());
}
}
```
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了