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。
H.265的I帧格式要求为
帧分隔符+VPS+帧分隔符+SPS+帧分隔符+PPS+帧分隔符+IDR
。以下图为例,帧分隔符为0x000001或者0x00000001;视频参数集VPS(Video Parameter Set)起始数据为0x40;SPS起始数据为0x42;PPS起始数据为0x44;IDR起始数据为0x26。
同一路视频流切换视频码流时,如主码流切换为子码流、修改码流分辨率、H.264和H.265互相切换等,请确保切换后的第一帧为I帧,否则可能会引发花屏等现象。
文档内容是否对您有帮助?