1

我目前正在开发一个应用程序,它使用来自 IP 摄像机(V Star 制造的 PnP IP/网络摄像机)的实时流。当使用提供的 Api 连接时,我将帧 o/p 作为 PBFrames。我无法显示它们。任何经历过它的人请帮助。提前致谢

void *thread_ReceiveVideo(void *arg)
{
NSLog(@"[thread_ReceiveVideo] Starting...");

int avIndex = *(int *)arg;
char *buf = malloc(VIDEO_BUF_SIZE);
unsigned int frmNo;
int ret;
FRAMEINFO_t frameInfo;

while (1) 
{
    ret = avRecvFrameData(avIndex, buf, VIDEO_BUF_SIZE, (char *)&frameInfo, sizeof(FRAMEINFO_t), &frmNo);

    if(ret == AV_ER_DATA_NOREADY)
    {
        usleep(30000);
        continue;
    }
    else if(ret == AV_ER_LOSED_THIS_FRAME)
    {
        NSLog(@"Lost video frame NO[%d]", frmNo);
        continue;
    }
    else if(ret == AV_ER_INCOMPLETE_FRAME)
    {
        NSLog(@"Incomplete video frame NO[%d]", frmNo);
        NSLog(@" the biffer is : %lu",sizeof(buf));


        continue;
    }
    else if(ret == AV_ER_SESSION_CLOSE_BY_REMOTE)
    {
        NSLog(@"[thread_ReceiveVideo] AV_ER_SESSION_CLOSE_BY_REMOTE");
        break;
    }
    else if(ret == AV_ER_REMOTE_TIMEOUT_DISCONNECT)
    {
        NSLog(@"[thread_ReceiveVideo] AV_ER_REMOTE_TIMEOUT_DISCONNECT");
        break;
    }
    else if(ret == IOTC_ER_INVALID_SID)
    {
        NSLog(@"[thread_ReceiveVideo] Session cant be used anymore");
        break;
    }


    NSLog(@"FRAM INFO FLAG :%hhu ",frameInfo.flags);
if(frameInfo.flags == IPC_FRAME_FLAG_PBFRAME)
    {
        // got an PBFrame, draw it.
        NSLog(@"got a video iframe to display");
      //  NSString *iFramestring = [NSString stringWithUTF8String:buf];
        printf("correclty recieved frame  is %s",buf);
    //                        

                }
}
free(buf);
NSLog(@"[thread_ReceiveVideo] thread exit");    
return 0;
   }
4

0 回答 0