17.使用avilib库:将h264格式的码流数据保存成AVI格式

目录

  • 一:下载:
  • 二:测试代码:
  • 三:转码的avi视频播放成功;

一:下载:

https://github.com/wyyrepo/avilib解压后得到如下文件:
avilib.c 
avilib.h

二:测试代码:

//*************h264转AVI格式********************
HI_S32 SAMPLE_COMM_VENC_AVI(VENC_STREAM_S *stStream)
{static avi_t *hAVIFile = NULL;static char recordfish = 0x1;int j = 0;int len = 0;char *pData = NULL;if(recordfish == 0x00){return HI_FAILURE;}if (hAVIFile == NULL){		hAVIFile = AVI_open_output_file("./stream_chn_yang_0.avi");printf("[%s:%d]:[yang] AVI_open_output_file\n",__FUNCTION__,__LINE__);AVI_set_video(hAVIFile, 1280, 720, 30, "H264");printf("[%s:%d]:[yang] AVI_set_video\n",__FUNCTION__,__LINE__);}if((stStream->u32Seq % 100) == 0){printf("[%s:%d]:[yang] stStream->u32Seq = %d\n",__FUNCTION__,__LINE__,stStream->u32Seq);}	for(j = 0;j < stStream->u32PackCount;j++){len 	= stStream->pstPack[j].u32Len - stStream->pstPack[j].u32Offset;pData	= (stStream->pstPack[j].pu8Addr + stStream->pstPack[j].u32Offset);					int keyfame = 0;if (stStream->pstPack[j].DataType.enH264EType == H264E_NALU_ISLICE){keyfame = 1;	// 是I帧}AVI_write_frame(hAVIFile, pData,len,keyfame);	//写入一帧h264数据		}if(stStream->u32Seq > 900 && hAVIFile != NULL){printf("[%s:%d]:[yang] AVI_close\n",__FUNCTION__,__LINE__);AVI_close(hAVIFile);hAVIFile = NULL;recordfish = 0x00;}return HI_SUCCESS;}

三:转码的avi视频播放成功;

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部