昨天拿到了IPCAM的AX代码,关键的注释...一行都木有啊,这是神马代码规范...
TCP连接6002port,几乎完全不是一次就成功,ipcam那边会自动T掉连接?测试了N次都是需要CLOSE_SOCKET_HANDLE 2-3次才能正常连接
然后发送"PLAY /video?ch=1 user=admin password=admin”指令开始接收live view数据...
记录3个参数设置:(ch:频道 )(user:用户名) (password:密码)
RETURN:
VIDEO(估计这是标示指令验证成功),不用另外提交申请,ipcam直接发送数据
MAX USER(估计这是说已经最大连接数)
NO VIDEO:User Account Error!(用户验证错误)
接下来还需要了解每个数据包是什么意义,貌似会收到统一长度的数据包 ,估计格式是一样的吧
PS: IPCAM会先返回512 bytes, 与媒体数据无关,必须剔除掉这些数据.
下面是列出的结构体,用于分析每帧的数据,很繁琐
// basic Video Frame Header
struct FRAME {
WORD Size; // version control -- 版本号 2 bytes
WORD Channel; // channel id --频道 2 bytes
WORD FrameType; // I-frame / P-Frame / Audio-Frame -- 指定A/V 的数据 2 bytes
WORD FrameWidth; // --宽 2 bytes
WORD FrameHeight;// -- 高 2 bytes
DWORD FrameSize; // -- 帧的长度 4 bytes
DWORD CodecType; // codec type -- 编码类型id 4 bytes
DWORD SequenceNumber; // continous sequence number (indexed when buffering)// -- 帧自然序列号
DATETIME RecordTime; // time stamp -- 时间 8bytes
STATUS Status; // 4 bytes 的一个 struct
DWORD Freqence; //audio sampling frequency --音频自然序列 4bytes
unsigned char ChannelNum; //the channel number of audio -- 频道id 1byte
unsigned char RecordingMode; // server recording mode --录制类型 1 byts
unsigned int VideoSequence; // Video Sequence only for client -- V 序列 4bytes
unsigned int AudioSequence; // Audio Sequence only for client -- A 序列 4bytes
char Reserved[8]; // pack it to 64 bytes -- 什么意思 预留8 bytes 又打包到64bytes ,难道是写错了 是64bit?
// parameter field
char* Buffer; //-- what?
int Max; //-- what?
};