打印

CDMA 视频传输

[复制链接]
2321|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kingpin1|  楼主 | 2008-10-30 16:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个项目,需要用CDMA传输摄像头采集的视频。
各位有没有现成的设备可以用的?多少钱?

另外我想用随便一台机器输入密码就可以访问摄像头,能做得到么?
都还另外需要什么设备?

大家留下联系方式和建议吧,最好在北京

相关帖子

沙发
armecos| | 2008-10-30 17:50 | 只看该作者

无法提供产品,但是可以提方案,

随便看看吧!

你需要一台服务器,ADSL接入,动态域名.
设备需要开通CDMA包年
查询设备可以用PC机访问服务器,或者用支持WINCE的手机查看.
这样可以实现多对多监控.

更多内容,详见:
《培训系列“丛书”》
www.armecos.com
-----------------------------------
More details, see:
《"Series Books" of Training》
www.armecos.com

*****************************************
* ecos增值包应用举例---视频监控终端方案 *
*****************************************
    2007/03/15  asdjf@163.com  www.armecos.com
    
    ecos增值包提供了多线程调度、文件系统、TCP/IP协议栈、图形用户界面等完整功能,裁减配置能力强,特别适合中高端嵌入式应用开发。税控机、行驶记录仪、视频监控终端、网络传输设备等都可以考虑使用ecos平台简化设计,减少代码量。
    
    下图是一个视频监控终端示意图:
    
    
                        键盘、烟雾/温度/红外传感器、I/O输出控制
                          -------------------------------
                          |       DMA/中断              |--------->蓝牙模块
    四路视频输入--------->| SAA7111     视音频          |--------->以太网Ethernet
    一路音频输入/输出---->| A/D、D/A   编解码器   MCU   |--------->GPRS、CDMA串口
                          |                    RTC      |
                          -------------------------------
                          硬盘/CF卡/SD卡/USB存储设备
    
    此系统包括四路视频输入(一路选通,支持CMOS摄像头、PAL/NTSC/用户自定义制式);一路音频输入输出;多种大容量存储外设,满足配置文件和视频文件存储;输入输出I/O设备;各种传感器探测;网络通信部分,满足远近距离音视频传输。
    系统内部由A/D、D/A转换器,视音频编解码器,MCU子系统组成。
    
    对于这么一个小系统,使用ecos增值包来设计是非常方便的。
    
    存储设备:直接挂装文件系统,mount /hd、/cf、/sd、/usb,然后利用标准的文件操作函数读写各种介质上的数据。(项目进度可控)
    
    输入输出设备:采用《第二讲硬件IO操作》和《第三讲ecos中断操作》可以非常容易地实现输入输出控制。键盘中断结构直接抄模板,I/O操作使用宏,便于移植。(项目进度可控)
    
    网络传输设备:采用《第六讲串口操作》,将GPRS/CDMA的MODEM串口挂装到/dev/ser1上,ecos自动枚举串口,会自动识别出MODEM串口和各种版本的16C55x工业标准,编译时已经配置好是否需要RAM缓冲区及其大小(带缓冲区的自动基于中断驱动),用户只要操作抽象的串口文件即可。ecos自带完整协议栈,支持PPP、UDP、TCP,用户只要使用标准的socket编程(多播、组播、RTP/RTCP)即可。(项目进度可控)
    
    A/D、D/A设备:视频数据量大,采用DMA能大大减少压栈、出栈操作,提高效率。中断操作参考《第三讲》。SAA7111采用I2C接口,操作复杂,适宜使用C++编程,参考《第十三讲 宏、汇编、C和C++混合编程》。抽象I2C、EEPROM和SAA7111为C++对象:
    
//======================================================
    class CIICBus
    {
    private:
        //for video iic
        //for eeprom iic
        
    public:
        CIICBus(int who );
        
        void  SCLOut( IIC_LEVEL Level );
    void  SDAOut( IIC_LEVEL Level );
    IIC_LEVEL  SCLIn( void );
    IIC_LEVEL  SDAIn( void );
    void  BusDelay( int Count );

    BOOL  CheckBusState( void );
    void  BusStart( void );
    void  BusRepeatStart( void );
    void  BusStop( void );
    void  WriteByte( unsigned char Data );
    void  ReadByte( unsigned char &Data );
    BOOL  GetAck( void );
    void  SetAck( IIC_LEVEL );
        static void  Init();
        static void  Lock();
        static void  Unlock();
    };
//======================================================
    class CEeprom : public CIICBus
    {
    private:
    cyg_mutex_t hMutex;
    public:
    CEeprom();  //:CIICBus( 0 ) { BusStop(); }
    public:
    void Init();
    int Write( unsigned char *buf, unsigned char pos, unsigned char size );
        int Read( unsigned char *buf, unsigned char pos, unsigned char size );
    };
//======================================================
    class CSAA7111 : public CIICBus
    {
    private:
#ifdef __ECOS__
        //寄存器地址
#endif
    protected:
        unsigned int  m_BusTimeout;
    
    public:
        CSAA7111( unsigned int DelayConst = 10, unsigned int BusTimeout = 3 )
        :CIICBus(1), m_BusTimeout( BusTimeout )   {}  

#ifdef __ECOS__
        void  Reset( void );
        void  PowerSave( BOOL Enable );
        void  ForbidOutput( BOOL Enable );  // operate CE, not FEI#
#endif

    public:
        BOOL  Initialize( void );
        BOOL  WriteReg( unsigned char Reg, unsigned char Data );
        BOOL  ReadReg( unsigned char Reg, unsigned char &Data );
        BOOL  SetVideoSource( int CamNo );
        BOOL  GetVideoSource( int &CamNo );
        BOOL  CheckVideoSingal( );
        void  SetBusTimeout( unsigned int BusTimeout  ) { m_BusTimeout = BusTimeout; }
        void  GetBusTimeout( unsigned int &BusTimeout ) { BusTimeout = m_BusTimeout; }
    };
    
    对象化的SAA7111操作接近人类的思维习惯,初始化、读写寄存器、设置视频源、检测视频信号等思路非常清晰。利用《第十二讲 多目录下makefile的通用写法》中介绍的宏定义可以根据实际情况调节代码,如“#ifdef __ECOS__”。
    
    视音频编解码器:采用自行设计的ASIC芯片HJV进行H.264视频压缩,视频编码器寄存器种类繁多,采用面向对象的设计方法可以保证代码质量。
    
    class CHJVCodec
    {
    private:
        // HJ602 status
        // Video input
        // Display generation
        // Video output
        // Codec operation    
        // Chip operation
        // video buffer management
    public:
        void WriteDecBuf
        void WriteDecBuf
        int ReadDecBuf

    private:
        void ValueBitrate
        void ValueChunkThreshold

    public:
        CHJVCodec

        // Chip IO
#ifdef _ECOS_
        void ReadReg
        void WriteReg
        void WriteRegNoMask
        void ReadDram
        void ReadDram
        void WriteDram
        void WriteDram
        void Vstrm_Out
        void GetStatus
        int CheckHW
#endif
        void ReadTLB
        void WriteTLB
        void RegDump

        // Chip Initialization
#ifdef _ECOS_
        void HwReset
        void SwReset
#endif
        void Initialize
        void InitReg
        void InitTLB

    // Clock Setting
    void SetClock
    void PowerSave

        // Video Input
        void SetViControl
        void SetViFilter
        void SetViSource
        void SetViTvFormat
        BOOL SetViScaling
        BOOL SetEncImgSize
        void SetDecImgSize

        // Codec Operation
        void SetIPFrame
        void SetAlgorithm
        void EncFastUpdate
        void SetEncVideoMode
        void SetEncPolicy
        void SetEncBitRate
        void SetStatisticsCtl
        void SetMBFresh

        // Display Generation
        void SetDeBlock
        void SetPipSrc
        void SetPipBorder
        void SetPipPos
        void SetPipScaling
        void SetPipBitmapSize
        void SetPipMirror
        void MainMirror
        void SetOSDCtl
        void SetFrameBufSize
        void SetDispScaling
        void SetDispUpdate
        void ManualUpdate

        // Display Interface
        void SetVoTvFormat
        void SetRGBDAC
        void SetDvOut
        void SetDoubleImgSize
        void SetPixelFetch
        void SetDispTiming
        void SetDispMode
        void SetDispLayout

        // Chip Operation
#ifdef _ECOS_
        void SetOperationMode
#endif     
        void SetHwIntLoop

        // Member data retrievel    
        void GetDramSize
        void GetClock
        void GetViSource
        void GetViControl
        void GetViFilter
        void GetViScaling
        void GetEncImgSize
        void GetDecImgSize
        void GetIPFrame
        void GetAlgorithm
        void GetEncVideoMode
        void GetEncPolicy
        void GetEncBitRate
        void GetStatisticsCtl
    
        void GetDeBlock
        void GetPipCtl
        void GetMirror
        void GetOsdCtl
        void GetFrameBufSize
        void GetDispUpdate
        void GetVoCtl
        void GetOperationMode
        void GetHwIntLoop

        void SetEncodeMode
        void StartEncoding
        void SetVideoFormat
        void SetFrameRate
        void SetEncQuality
        void SetIFrameInterval
        void ResetBuffer
    };
    
    经过H.264和g.723.1/g.729压缩的视音频数据加上H.245控制经H.223合路,就可以实现串型码流的音频、视频、数据同时传输,Windows上的DirectX可以直接解码此音视频流数据。ecos库里带有H.264、MP4、MP3、G系列音视频编解码库,但软件运行太慢,即使DSP也显得芯片面积太大了,这里使用一小颗视音频编解码ASIC芯片。不过合路时的数据量仍然很大,对MCU速率有较高要求。
    因为网络传输速率可变,所以需要实时调整视频源编码速率,以保证视频的连续实时,此时,要用到《第十讲 时间管理》里介绍的时间相关函数辅助计算编码速率,按照码源速率控制算法控制数据生成。
    在访问一些临界资源时要采用《第十一讲 同步原语》介绍的同步函数进行控制。
    
    好了,这只是ecos增值包的一个简单应用例子,介绍它的目的主要是让使用者明白文档中各章节的讲解是如何与实际项目联系起来的。以后再介绍行使记录仪的方案、路由器方案、***/防火墙方案等。
    
    总之,ecos是一个不错的平台,学习和使用ecos增值包很有益处。

使用特权

评论回复
板凳
xwj| | 2008-10-30 17:52 | 只看该作者

基于以太网传输的视频服务区很多,不过有没有直接集成CDMA

不明白你为什么要限定CDMA,
如果只是想在手机上看到监视视频的话,随便买个视频服务器,再手机上网即可,
只是流量费用很高的哦

使用特权

评论回复
地板
kingpin1|  楼主 | 2008-10-31 13:44 | 只看该作者

我的设备工作情况

设备工作在野外,需要太阳能供电,预先也没有铺设光纤等视频通信措施。
现在只能采用CDMA模块,传输速率没有太多要求,能传几幅图就可以,视频服务器
价格太高了吧?

使用特权

评论回复
5
db10| | 2008-10-31 14:27 | 只看该作者

。。。。

armecos 发表于 2008-10-30 17:50 创业|外包|承接 ←返回版面    

3楼: 无法提供产品,但是可以提方案, 

随便看看吧!

你需要一台服务器,ADSL接入,动态域名.
设备需要开通CDMA包年
查询设备可以用PC机访问服务器,或者用支持WINCE的手机查看.
这样可以实现多对多监控. 
 

他说得这个方案很对,我们正在做通过GPRS得方式,整个项目快完成,只是GPRS和CDMA途径不同而已,其他方式与作用相同。

使用特权

评论回复
6
armecos| | 2008-10-31 23:32 | 只看该作者

肯定要有视频服务器的,

否则只能点对点传输,一次只能有一个人查看,另外,图像数据最好备份到服务器中,再者,没有服务器,你就必须在设备上实现动态域名。有服务器的好处是多对多,比如:1000个人同时查看10000台设备,服务器采用P2P方式,看的人越多,速度越快,同时容易实现鉴权、计费。图像保存在数据库里,便于检索。

设备具有不同工作模式:
拍照模式
追踪模式
监控模式
......
比如:植物病虫害监控就不需要很高速率,但要求清晰度比较高,每隔3分钟拍一次,放的时候正常播放,就能清楚地看到虫子吃叶子的过程。此时应采用拍照模式。
追踪模式在有活动物体时才录像,就象青蛙对运动物体敏感,却看不到静止物体一样,利用红外传感器进行运动识别,可以大大压缩数据量。例如:有小偷闯入时才开始录像取证,平时不录。

野外使用时必须特殊处理,例如;东北天气寒冷,导致芯片死机电源失效;西北高原或沙漠地区太阳暴晒机箱使其内部温度高达100度以上,芯片/看门狗死机;南部沿海潮湿、盐雾腐蚀......极其容易失效,所以能在野外使用的设备成本非常高。

CDMA使用的是无线信道,而Linux之类的操作系统的TCP/IP协议栈是按照有线铜网络设计的,所以必须重写协议栈代码,优化速度。

此设备适合油田钻井设备无人监控、国土矿山资源监控、运钞车监控、草原牧场管理、车辆使用监视等等

这种野外设备还有很多细节需要注意,做好实在不容易,呵呵。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝