zoukankan      html  css  js  c++  java
  • EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案之使用ffmpeg保存快照数据方法与代码

    背景分析

    EasyNVR主要功能模块有设备发现与接入、实时直播、摄像机控制、录像与管理、设备快照与状态维护、第三方平台对接,其中设备快照与状态维护主要包括定时检测通道设备的在线状态、定时对通道摄像机进行抓图、通过接口触发,可以抓取到实时的视频快照信息,刷新快照。EasyNVR不仅提供快照预览功能,还能提供向EasyNVS云平台上传快照的功能。系统会定时向配置的摄像机抓取快照数据,保存图片用于预览,并且用于快照上传。

    原理

    • EasyNVR可将从摄像机取出来的I帧数据编码成jpeg图片数据,保存后上传。

    实现

    • AVPacket管理,使用wrapper管理AVPacket的资源
    
        class AVPacketWrapper
        {
        public:
    	    AVPacketWrapper()
    		    : packet_(new AVPacket)
    	    {
    		av_init_packet(packet_);
    		packet_->data = NULL;
    		packet_->size = 0;
    	}
    
    	explicit AVPacketWrapper(size_t size)
    		: packet_(new AVPacket)
    	{
    		av_new_packet(packet_, size);
    	}
    
    	~AVPacketWrapper()
    	{
    		if (packet_)
    		{
    			av_packet_unref(packet_);
    			delete packet_;
    		}
    	}
    
    	AVPacket* getPacket() const
    	{
    		return packet_;
    	}
    
        private:
    	    AVPacketWrapper(const AVPacketWrapper&);
    	    AVPacketWrapper& operator =(const AVPacketWrapper&);
    
    	    AVPacket* packet_;
    
        };
    
    
         int DecoderHelper::DecodeVideo(char* inBuff, int inBuffSize)
        {
    	    if (!inBuff)
    		    return -1;
    
    	if (1 > inBuffSize)
    		return -1;
    
    	if (!avCodecContext_)
    	{
    		releaseVideoDecoder();
    		return -2;
    	}
    
    	AVPacketWrapper packetWrapper;
    	AVPacket* packet = packetWrapper.getPacket();
    
    	packet->size = inBuffSize;
    	packet->data = reinterpret_cast<uint8_t*>(inBuff);
    
    	int ret = avcodec_send_packet(avCodecContext_, packet);
    	if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
    	{
    		return -3;
    	}
    	 
    	ret = avcodec_receive_frame(avCodecContext_, avFrame_);
    	if (ret < 0 && ret != AVERROR_EOF)
    	{
    		return -3;
    	}
    
    	return 0;
        }
    

    EasyNVR应用场景

    EasyNVR可以说已经成为国内视频互联网化基础建设的排头兵,几乎各个民生行业都已经有了EasyNVR视频能力输出的身影,EasyNVR多年服务于各行各业视频基础建设,EasyNVR的可靠性、完整性、稳定性已经受到了业界的广泛认可!
    EasyNVR稳定可靠
    EasyNVR场景一

    智慧校园

    EasyNVR场景二

    平安厂区

    EasyNVR场景三

    智慧家居

    关于EasyNVR

    EasyNVR是一款拥有完整、自主、可控知识产权,同时又能够具备软硬一体功能的安防互联网化流媒体服务器,能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP、Onvif协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发。详情可访问EasyNVR官网:http://www.easynvr.com

  • 相关阅读:
    页面滚动性能优化之passive
    【webpack4x】部分底层原理及手写一个简单打包工具
    【webpack4x】实战配置及问题解析
    【webpack4x】高级概念
    【webpack4x】核心概念
    VMware虚拟机服务的vmware-hostd自动启动和停止
    海淘电商网址
    一键批量ping任意ip段的存活主机
    cpanel导入大数据库(mysql)的方法
    awstats 日志分析
  • 原文地址:https://www.cnblogs.com/babosa/p/11123970.html
Copyright © 2011-2022 走看看