CMSV6帮助文档
/
901 DOCS · 225 VIDEOSEN

多路录像同步远程回放

作者 谢周轩更新 2026-05-09 11:15:14文档 ID 2371约 1,846 字 · 阅读 4 分钟查看原文 ↗

1、功能说明

多路录像同步远程回放

2、对接说明

2.1 设备sdk版本要求

"V6.1.50 20190322" (含)之后的版本

2.2 录像搜索返回,客户端查找文件时,设备返回的允许多路回放标志及可以多路回放的通道信息

    virtual void FindRecFile(int nYear, int nMonth, int nDay, int nBeginTime, int nEndTime, int nRecType, int nChannel
                    , TTXPfnRecFindCB pfnRecFindCB, void* pFindUsr, TTXPfnGetExitCB pfnGetExitCB, void* pExitUsr);


typedef struct _tagTTXRecFile
{
    unsigned char Year;     //年,11 = 2011年
    unsigned char Month;    //日,从1开始,1 - 12
    unsigned char Day;      //天,从1开始,1 - 31
    unsigned char Hour;     //小时,从0开始,0 - 23
    unsigned char Minute;   //分钟,从0开始,0 - 59
    unsigned char Second;   //秒,从0开始,0 - 59
    unsigned char Type;     //文件类型      TTX_RECTYPE_NORMAL, TTX_RECTYPE_ALARM, TTX_RECTYPE_ALL
    unsigned char Channel;  //通道号,从0开始
    unsigned int  uiFileTime;   //文件时长,秒为单位
    unsigned int  uiFileLen;    //文件长度
    char    szFileName[240];
    unsigned short usMulChn;    //可以多路回放的通道 ,按位表示
    char    bMulPlay;           //是否支持多路同时回放
    char    cReserve;           //保留参数
    char    cYJWNewFlag;        //新文件使用,请填0
    char    cCoointNewFlag;     //新文件使用,请填0
    char    bRecording;         //是否正在录像,0表示没有,1表示正在录像
    char    bStream;                //是否为流式文件,当为流式文件时,客户端会使用回放的方式进行文件下载
    unsigned int ChnMask;       //通道掩码,当一个文件存在多个通道的录像时,使用些参数
    int     nAlarmInfo;         //一个文件允许有多个报警,当文件是报警文件时有效
}TTXRecFile_S, *LPTTXRecFile_S;

返回文件内容的  bMulPlay 配置为true表示支持多路同时回放
usMulChn 返回可以回放的通道信息,按位表示,第0位为1表示通道1可以回放

2.3 回放时,在录像文件解析时,ReadFrame返回多个通道的视频数据

class LIBDVRNET_API CTTXRecFile
{
    .......
    //读取一帧数据
    //对视频和音频而言返回码流信息
    //有的视频帧内容还会包括GPS信息,请将需要将GPS信息当成信息帧返回
    virtual bool ReadFrame( TTXFILEFrame_S *pFrame1, TTXFILEFrame_S *pFrame2 ) = 0;

protected:
    ........
    unsigned short m_usChnMask;
};

示例
bool ReadFrame( TTXFILEFrame_S *pFrame1, TTXFILEFrame_S *pFrame2 )
{
    bool ret = false;
    int frmChn = 0;
    while (true)
    {
        //读一帧的数据
        if (readoneframe(&frmChn))
        {
            //判断通道是否要返回
            if ( (m_usChnMask>>frmChn)&0x1 )
            {
                //此通道的数据为客户端要回放的数据
                pFrame1->nChannel = frmChn;
                //填充帧数据
                ret = true;
                break;
            }
            else
            {
                //重新读帧数据
                continue;
            }
        }
        else
        {
            break;
        }
    }
    return ret;
}

数据来源 help.cmsv8.com
901 篇文档 · 225 个视频 · docs.alwaycare.com