海康威视摄像头不支持的码流类型_v380pro摄像头怎么连接无线网

海康威视摄像头不支持的码流类型_v380pro摄像头怎么连接无线网前言:对于HIS视频采集、输出和编解码,直接使用海思SDK中的sample代码+NVP6124就可以实现,这里有提供HIMPP开发文档、海思sample源码和NVP6124的驱动代码,可以自行去下载;HIMPP开发文档:https://download.csdn.net/download/u012478275/11573292海思sample源码:…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:

    对于HIS视频采集、输出和编解码,直接使用海思SDK中的sample代码+NVP6124就可以实现,这里有提供HIMPP开发文档、
海思sample源码和NVP6124的驱动代码,可以自行去下载;
    HIMPP开发文档:       https://download.csdn.net/download/u012478275/11573292
    海思sample源码:       https://download.csdn.net/download/u012478275/10118411
    NVP6124的驱动代码:https://download.csdn.net/download/u012478275/11573327
对于海思sample程序只能实现单个分辨率采集,本文主要讲解怎么实现对摄像头采集的自适应,通俗的说就是无论你插入960H、720P、1080P分辨率的摄像头,都能输出和编码。

一、单分辨率视频采集

   在sample程序中,需要采集那种分辨率的摄像头,只要对下面两个寄存器的值进行配置;
    typedef struct _nvp6124_chn_mode
    {

        unsigned char ch;   
        unsigned char vformat; 
        unsigned char chmode; 
    }nvp6124_chn_mode;

    typedef struct _nvp6124_opt_mode
    {

        unsigned char chipsel;
        unsigned char portsel;
        unsigned char portmode;
        unsigned char chid;
    }nvp6124_opt_mode;

其中两个主要的参数;vformat,portsel 确定采集的分辨率,
    960H: vformat = NVP6124_VI_SD;                 portsel = NVP6124_OUTMODE_4MUX_SD;
    720P:  vformat = NVP6124_VI_720P_2530;     portsel = NVP6124_OUTMODE_2MUX_HD;
    1080P:vformat = NVP6124_VI_720P_2530;   portsel = NVP6124_OUTMODE_2MUX_FHD;

当你需要不同通道接不一样的摄像头的时候,就可以通过ch、vformat和portsel来确定接入摄像头的分辨率;

二、自适应视频采集    

1、摄像头分辨率检测
    通过nvp6124对摄像头分辨率进行检测,这里获取IOC_VDEC_GET_INPUT_VIDEO_FMT的值得到接入摄像头的分辨率;
        nvp6124_input_videofmt vfmt;
        ioctl(fd, IOC_VDEC_GET_INPUT_VIDEO_FMT, &vi_fmt);
        res = vi_fmt.getvideofmt[ch];    
    (1)res = 2 ,   960H  分辨率摄像头
    (2)res = 8 ,   720P  分辨率摄像头
    (3)res = 128 , 1080P 分辨率摄像头

2、自适应参数配置
    海思3520Dv300 sample程序,是不支持自适应采集的,需要对vformat,portsel的枚举进行添加,nvp6124驱动中是有支持的, 只需要sample程序更新下面两个枚举就行;
    enum
    {

        NVP6124_VI_SD = 0,           //960x576i(480)
        NVP6124_VI_720P_2530,        //1280×720@25p(30)
        NVP6124_VI_720P_5060,        //1280×720@50p(60)
        NVP6124_VI_1080P_2530,        //1920×1080@25p(30)
        NVP6124_VI_1920H,            //1920x576i(480)
        NVP6124_VI_720H,            //720x576i(480)
        NVP6124_VI_1280H,            //1280x576i(480)
        NVP6124_VI_1440H,            //1440x576i(480)
        NVP6124_VI_960H2EX,           //3840x576i(480)
        NVP6124_VI_HDEX,            //2560×720@25p(30)
        NVP6124_VI_BUTT
    };

    typedef enum sample_vi_6124_mux_e
    {

        NVP6124_OUTMODE_1MUX_SD = 0,
        NVP6124_OUTMODE_1MUX_HD,
        NVP6124_OUTMODE_1MUX_HD5060,
        NVP6124_OUTMODE_1MUX_FHD,
        NVP6124_OUTMODE_2MUX_SD,
        NVP6124_OUTMODE_2MUX_HD_X,
        NVP6124_OUTMODE_2MUX_HD,
        NVP6124_OUTMODE_2MUX_FHD_X,
        NVP6124_OUTMODE_4MUX_SD,
        NVP6124_OUTMODE_4MUX_HD_X,
        NVP6124_OUTMODE_4MUX_HD,
        NVP6124_OUTMODE_2MUX_FHD,
        NVP6124_OUTMODE_1MUX_HD_X,   
        NVP6124_OUTMODE_1MUX_FHD_X,
        NVP6124_OUTMODE_4MUX_FHD_X,
        NVP6124_OUTMODE_4MUX_MIX,
        NVP6124_OUTMODE_2MUX_MIX,
        NVP6124_OUTMODE_BUTT
    }SAMPLE_VI_6124_MUX_E;

如果需要自适应,需要设置 vformat = NVP6124_OUTMODE_4MUX_MIX;
    960H: portsel = NVP6124_VI_960H2EX;
    720P:  portsel = NVP6124_VI_HDEX;
    1080P:portsel = NVP6124_VI_1080P_2530;
通过不同分辨率,设置对应portsel的值,这里是SAMPLE_VI_MODE_8_1080P模式下portsel的值,但是HIS3520Dv300有个比较恶心的点,一个AD只支持2路1080P,所以如果需要使用2个AD接8路720P,在SAMPLE_VI_MODE_8_720P模式下,portsel的值应该按照下面的值设置:
    960H: portsel = NVP6124_VI_1920H;
    720P:  portsel = NVP6124_VI_720P_2530;
    1080P:portsel = NVP6124_VI_1080P_2530;

3、实时检测
    上面两步可以实现对接入摄像头的检测和采集,但是如果所有参数都设置完成,中间需要插拔摄像头换成不同分辨率的摄像头时,摄像头数据就不能采集了,这时需要实时检测摄像头分辨率,如果分辨率改变了,需要重新初始化和配置参数;这里vformat,portsel的值需要重新配置,还有需要重新设置VI通道属性HI_MPI_VI_SetChnAttr,启用VI通道HI_MPI_VI_EnableChn,当然,由于之前已经启用过VI通道,需要先禁用HI_MPI_VI_DisableChn,再启用。

4、内存VB配置
    当设置MPP视频缓存池属性HI_MPI_VB_SetConf时,需要通过分辨率配置MPP视频缓存池的大小,一般的做法按照最大分辨率分配就行,如果在自适应情况下,需要接1080P摄像头,那么按照1920×1080去分配VB缓存大小就行,因为接其他分辨率分配VB缓存大小肯定小于1920×1080,所以按照最大分配肯定是可以的,但是如果你的内存比较小,直接使用1920×1080会浪费内存,那么可以给不同分辨率分配不同的VB块,VB缓冲池在使用过程中,是从小往大使用的;这里特别注意的一点,自适应1080P模式下960H的采集分辨率NVP6124_VI_960H2EX(3840*576)大于1080P采集的分辨率NVP6124_VI_1080P_2530(1920 * 1080),所以分配VB最大的缓冲块应该是3840*576;这里多测试,查看cat /proc/umap/vb 值,就可以找到VB块分配的规律。

三、最后

    这篇文章完全是在海思3520Dv300 SDK中sample程序的基础上改过来的,所以需要一些对MPP程序理解的基础,自适应视频采集的主体逻辑基本如上,可能有些细节实现的问题,或者哪里写的不对的地方,麻烦留言指出,一起研究,一起成长。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190305.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 支持向量回归-SVR

    支持向量回归-SVR对于一般的回归问题,给定训练样本D={(x1,y1),(x2,y2),…,(xn,yn)},yi€R,我们希望学习到一个f(x)使得,其与y尽可能的接近,w,b是待确定的参数。在这个模型中,只有当发f(x)与y完全相同时,损失才为零,而支持向量回归假设我们能容忍的f(x)与之间最多有ε的偏差,当且仅当f(x)与y的差别绝对值大于ε时,才计算损失,此时相当于以f(x)为中心,构建一个宽度为2ε的

  • IDEA 2019.3.4激活码 licences key is in_通用破解码

    IDEA 2019.3.4激活码 licences key is in_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour……错误的解决方案

    VS2013验证控件出现 WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResour……错误的解决方案

  • 物业管理系统源码java_Java小区物业管理系统 源码报告下载

    物业管理系统源码java_Java小区物业管理系统 源码报告下载小学期实习就弄了个这…留作纪念.技术上突飞猛进的三周,教会了我一些做人的道理,尤其是:团队合作时的木桶效应….整个后端不是我做的,但是我还是改了好多,要不然总不可能让废柴坐那玩手机吧…其实并没有什么卵用…Bootstrap主题不错,不过里面好多文件冗余还不敢删…上传了完整的工程文件,docs目录里是部分文档…系统功能用户登录管理:这是系统的必要部分,通过它可…

  • 五表权限_表格设置查看权限和编辑权限

    五表权限_表格设置查看权限和编辑权限设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。各表的大体表结构如下:1、用户表(UserInfo):Id、Use…

  • 金蝶服务器设置(金蝶系统登录服务器)

    金蝶如何登录服务器配置内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。如何修改集群节点的NTP服务器地址?集群访问OBS上报403异常。集群Master节点NTP时间与集群外节点的NTP服务器时间不同步,时间相差超过15min,导致集群访问OBS时鉴权失败,上报403异常。cat/…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号