使用说明

LinkVisual SDK提供了视频播放功能,开发视频播放功能前,请参考本文,了解开发过程中的相关信息。

视频播放包括以下几种形式,其实现过程可参考相应的文档:

使用说明

在设备端实现视频播放的功能时,请参考以下要求,完成设备端开发。

  • 强制I帧命令发出时:

    • 请在300毫秒内产生I帧。

    • 请重新调用lv_stream_send_config发送音视频流配置。

  • 进行本地录像播放的定位操作后:

    • 应该尽快发出I帧,确保尽快显示定位后的数据。

    • SDK在定位操作后,直至I帧到达前,不再接收音视频的P帧数据。

  • 视频播放时对H.264和H.265的帧结构有如下要求,您可参考下面的代码,打印I帧的前256个字节查看帧结构。

    for (int i = 0; i < ((buffer_size > 256)?256:buffer_size); i++) {
     printf("%02x ", buffer[i]);
     if ((i + 1) % 30 == 0) {
      printf("\n");
     }
    }
    printf("\n");
    • H.264的I帧格式要求为帧分隔符+SPS+帧分隔符+PPS+帧分隔符+IDR

      以下图为例,帧分隔符为0x000001或者0x00000001;序列参数集SPS(Sequence Parameter Set)起始数据为0x67;图像参数集PPS(Picture Parameter Set)起始数据为0x68;即时解码器刷新IDR(Instantaneous Decoding Refresh)起始数据为0x65。H264

    • H.265的I帧格式要求为帧分隔符+VPS+帧分隔符+SPS+帧分隔符+PPS+帧分隔符+IDR

      以下图为例,帧分隔符为0x000001或者0x00000001;视频参数集VPS(Video Parameter Set)起始数据为0x40;SPS起始数据为0x42;PPS起始数据为0x44;IDR起始数据为0x26。H265

  • 同一路视频流切换视频码流时,如主码流切换为子码流、修改码流分辨率、H.264和H.265互相切换等,请确保切换后的第一帧为I帧,否则可能会引发花屏等现象。