This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

About bitrate of H.264 stream.

Genius 3400 points

Hi all:

      In DM368 IPNC camera, receive single H.264 stream using VLC. And I fond the bitrate is diff from the setting bitrate from WEB GUI.

     Bitrate control: CBR

     set bitrate to 4000Kbps, VLC media information stream bitrate is only 2000Kbps;

 And set bitrate to 12000Kbps,VLC media information stream bitrate is only about 5000Kbps;

 I have no idea about this phenomenon. Anybody can give me some advices?

 Thanks a lot!

  • Hi,

     

    Can you please ensure you are using version 2.0 of the IPNC version.

     

    We had this issue when  you change the framerate from 30 to 15 the bitrate is halved in version 1.9, but this has been fixed in v2.0.

     

    Please let us know the parameter you had set.

     

    Regards,

     

    Raghu

     

  • Hi Raghu:

                       Thanks your reply at first!

                       I am sure that We are using version 2.0 of the IPNC version.

                       In my application, I had modify av_server to capture 5M(2448x2048) YUV picture in ISIF, and then to resize , encode to1080P H.264, setting parameters is:

    gAVSERVER_UI_config.ldcEnable = FALSE;
    gAVSERVER_UI_config.vsEnable = FALSE;
    gAVSERVER_UI_config.snfEnable = FALSE;
    gAVSERVER_UI_config.tnfEnable = FALSE;

    config->sensorMode = DRV_IMGS_SENSOR_MODE_2448x2048;
    config->sensorFps = 15;

    config->vstabTskEnable = gAVSERVER_UI_config.vsEnable;
    config->ldcTskEnable = gAVSERVER_UI_config.ldcEnable;
    config->vnfTskEnable = gAVSERVER_UI_config.snfEnable|gAVSERVER_UI_config.tnfEnable;
    config->encryptTskEnable = FALSE;

    config->captureRawInMode = AVSERVER_CAPTURE_RAW_IN_MODE_DDR_IN;
    config->captureSingleResize = FALSE;
    config->captureYuvFormat = DRV_DATA_FORMAT_YUV420;

    config->numCaptureStream = 3;

    if(numEncodes > config->numCaptureStream)
           numEncodes = config->numCaptureStream;

    config->numEncodeStream = numEncodes;

    config->faceDetectConfig.captureStreamId = 0;
    config->faceDetectConfig.fdEnable = gAVSERVER_UI_config.fdEnable;

    config->displayConfig.captureStreamId = 1;
    config->displayConfig.width = 640;
    config->displayConfig.height = 480;
    config->displayConfig.expandH = TRUE;

    config->audioConfig.captureEnable = FALSE;
    config->audioConfig.samplingRate = 8000;
    config->audioConfig.codecType = ALG_AUD_CODEC_G711;
    config->audioConfig.fileSaveEnable = FALSE;

    i=0;

    k=0;
    config->captureConfig[i].width = 1920;
    config->captureConfig[i].height = 1080;
    config->captureConfig[i].ldcEnable = gAVSERVER_UI_config.ldcEnable;
    config->captureConfig[i].snfEnable = gAVSERVER_UI_config.snfEnable;
    config->captureConfig[i].tnfEnable = gAVSERVER_UI_config.tnfEnable;
    config->captureConfig[i].vsEnable = config->vstabTskEnable;

    if(numEncodes>0)
         config->captureConfig[i].numEncodes = 1;

    config->captureConfig[i].encodeStreamId[k++]= 0;
    config->captureConfig[i].frameSkipMask = 0xFFFFFFFF;
    i++;

    k=0;
    config->captureConfig[i].width = JAI_IMAGE_WIDTH;
    config->captureConfig[i].height = JAI_IMAGE_HEIGHT;
    config->captureConfig[i].ldcEnable = gAVSERVER_UI_config.ldcEnable;
    config->captureConfig[i].snfEnable = gAVSERVER_UI_config.snfEnable;
    config->captureConfig[i].tnfEnable = gAVSERVER_UI_config.tnfEnable;
    config->captureConfig[i].vsEnable = config->vstabTskEnable;

    if(numEncodes>2)
    config->captureConfig[i].numEncodes = 1;

    config->captureConfig[i].encodeStreamId[k++]= 2;
    config->captureConfig[i].frameSkipMask = 0xFFFFFFFF;
    i++;

    k=0;
    config->captureConfig[i].width = 352;
    config->captureConfig[i].height = 288;
    config->captureConfig[i].ldcEnable = gAVSERVER_UI_config.ldcEnable;
    config->captureConfig[i].snfEnable = gAVSERVER_UI_config.snfEnable;
    config->captureConfig[i].tnfEnable = gAVSERVER_UI_config.tnfEnable;
    config->captureConfig[i].vsEnable = config->vstabTskEnable;

    if(numEncodes>1)
    config->captureConfig[i].numEncodes = 1;

    config->captureConfig[i].encodeStreamId[k++]= 1;
    config->captureConfig[i].frameSkipMask = 0xFFFFFFFF;
    i++;

    i=0;
    config->encodeConfig[i].captureStreamId = 0;
    config->encodeConfig[i].cropWidth = ALIGN_ENCODE(1920);
    config->encodeConfig[i].cropHeight = ALIGN_ENCODE(1080);
    config->encodeConfig[i].frameRateBase = 15000;
    config->encodeConfig[i].frameSkipMask = 0xFFFFFFFF;
    config->encodeConfig[i].codecType = gAVSERVER_UI_config.codecType[i];
    config->encodeConfig[i].codecBitrate = gAVSERVER_UI_config.codecBitrate[i];
    config->encodeConfig[i].encryptEnable = FALSE;
    config->encodeConfig[i].fileSaveEnable = FALSE;
    config->encodeConfig[i].motionVectorOutputEnable = FALSE;
    config->encodeConfig[i].qValue = gAVSERVER_UI_config.codecBitrate[i];
    i++;

    config->encodeConfig[i].captureStreamId = 2;
    config->encodeConfig[i].cropWidth = ALIGN_ENCODE(352);
    config->encodeConfig[i].cropHeight = ALIGN_ENCODE(288);
    config->encodeConfig[i].frameRateBase = 15000;
    config->encodeConfig[i].frameSkipMask = 0xFFFFFFFF;
    config->encodeConfig[i].codecType = gAVSERVER_UI_config.codecType[i];
    config->encodeConfig[i].codecBitrate = gAVSERVER_UI_config.codecBitrate[i];
    config->encodeConfig[i].encryptEnable = FALSE;
    config->encodeConfig[i].fileSaveEnable = FALSE;
    config->encodeConfig[i].motionVectorOutputEnable = FALSE;
    config->encodeConfig[i].qValue = gAVSERVER_UI_config.codecBitrate[i];
    i++;

    config->encodeConfig[i].captureStreamId = 1;
    config->encodeConfig[i].cropWidth = ALIGN_ENCODE(JAI_IMAGE_WIDTH);
    config->encodeConfig[i].cropHeight = ALIGN_ENCODE(JAI_IMAGE_HEIGHT);
    config->encodeConfig[i].frameRateBase = 5000;
    config->encodeConfig[i].frameSkipMask = 0xFFFFFFFF;
    config->encodeConfig[i].codecType = gAVSERVER_UI_config.codecType[i];
    config->encodeConfig[i].codecBitrate = gAVSERVER_UI_config.codecBitrate[i];
    config->encodeConfig[i].encryptEnable = FALSE;
    config->encodeConfig[i].fileSaveEnable = FALSE;
    config->encodeConfig[i].motionVectorOutputEnable = FALSE;
    config->encodeConfig[i].qValue = gAVSERVER_UI_config.codecBitrate[i];
    i++;

    break;

    Thanks you very much.

  • One point to check would be the performance of the system is FPS. In case the encoder is configured for 4mbps@30fps but the system throughput is just 15fps, the VLC would show 2MBps only. This is because the actual bits generate in 1 sec would get halved.

    regards

    Yashwant