2325
- 收藏
- 点赞
- 分享
- 举报
用venc录像有时录的视频会出现快进的感觉,有时正常怎么回事
HI_VOID *vedio_recorde()
{
fd_set read_fds;
int i;
VENC_STREAM_S stStream;
VENC_CHN_STAT_S stStat;
MP4FileHandle hMP4File[2];
MP4TrackId video[2];
HI_CHAR aszFileName[2][64];
//HI_S32 VencFd[2];
HI_S32 s32Ret;
int w=0;
/*for(i=0;i<2;i++)
{
VencFd = HI_MPI_VENC_GetFd(i*2+1);
if (VencFd < 0)
{
SAMPLE_PRT("HI_MPI_VENC_GetFd failed with %#x!\n",VencFd);
return NULL;
}
if (maxfd <= VencFd)
maxfd = VencFd;
}*/
for(i=0;i<2;i++)
{
sprintf(aszFileName, "video/stream_chnxu%d_%d%s", i*2+1,j,".mp4");
hMP4File= MP4CreateEx(aszFileName, 0, 1, 1, 0, 0, 0, 0);
if (hMP4File == MP4_INVALID_FILE_HANDLE)
{
printf("open mp4 file fialed.\n");
return NULL;
}
MP4SetTimeScale(hMP4File, 90000);
video= MP4AddH264VideoTrack(hMP4File, 90000, 90000 / 25, 3840, 2160,
0x64, //sps[1] AVCProfileIndication
0x00, //sps[2] profile_compat
0x1f, //sps[3] AVCLevelIndication
3); // 4 bytes length before each NAL unit
if (video == MP4_INVALID_TRACK_ID)
{
printf("add video mp4 track fialed.\n");
return NULL;
}
}MP4Close(hMP4File, 0);
while(1)
{
FD_ZERO(&read_fds);
struct timeval TimeoutVal;
for (i = 0; i <2; i++)
{
FD_SET(VencFd[i*2+1], &read_fds);
}
TimeoutVal.tv_sec = 2;
TimeoutVal.tv_usec = 0;
s32Ret = select(maxfd + 1, &read_fds, NULL, NULL, &TimeoutVal);
//printf("s32Ret:%d",s32Ret);
if (s32Ret < 0)
{
SAMPLE_PRT("select failed!\n");
break;
}
else if (s32Ret == 0)
{
SAMPLE_PRT("get venc stream time out, exit thread\n");
continue;
}
else
{
for (i = 0; i <2; i++)
{
//printf("venc[%d]:",i);
if (FD_ISSET(VencFd[i*2+1], &read_fds))
{
/*******************************************************
step 2.1 : query how many packs in one-frame stream.
*******************************************************/
memset(&stStream, 0, sizeof(stStream));
s32Ret = HI_MPI_VENC_Query(i*2+1, &stStat);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VENC_Query chn[%d] failed with %#x!\n", i*2+1, s32Ret);
break;
}
HI_S32 s32Ret;
if(0 == stStat.u32CurPacks)
{
SAMPLE_PRT("NOTE: Current frame is NULL!\n");
continue;
}
/*******************************************************
step 2.3 : malloc corresponding number of pack nodes.
*******************************************************/
stStream.pstPack = (VENC_PACK_S*)malloc(sizeof(VENC_PACK_S) * stStat.u32CurPacks);
if (NULL == stStream.pstPack)
{
SAMPLE_PRT("malloc stream pack failed!\n");
break;
}
/*******************************************************
step 2.4 : call mpi to get one-frame stream
*******************************************************/
stStream.u32PackCount = stStat.u32CurPacks;
s32Ret = HI_MPI_VENC_GetStream(i*2+1, &stStream, HI_TRUE);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
stStream.pstPack = NULL;
SAMPLE_PRT("HI_MPI_VENC_GetStream failed with %#x!\n",s32Ret);
break;
}
MP4WriteSample(hMP4File, video, stStream.pstPack[0].pu8Addr+stStream.pstPack[0].u32Offset,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset,MP4_INVALID_DURATION, 0, 1);
if(w==1300)
{ printf("pthread w=%d\n");
flag=0;
}
//printf("HI_S32 VencFd[VENC_MAX_CHN_NUM];venc[%d]:%d\n",i,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset);
//printf("FD_ISSET success\n");
/*******************************************************
step 2.6 : release stream
*******************************************************/
//if(flag=1)
//{
s32Ret = HI_MPI_VENC_ReleaseStream(i*2+1,&stStream);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
SAMPLE_PRT("HI_MPI_VENC_ReleaseStream chn[%d] failed with %#x!\n", i*2+1, s32Ret);
stStream.pstPack = NULL;
break;
}
//}
/*******************************************************
step 2.7 : free pack nodes
*******************************************************/
free(stStream.pstPack);
//printf("free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
}
}
}
if(w==1500)
{
for (i = 0; i <2; i++)
{
MP4Close(hMP4File, 0);
//printf("mp4 close\n");
}
break;
}
w++;
}
printf("pthread over\n");
}
/******************************************************************************
* funciton : get stream from each channels and save them
******************************************************************************/
HI_VOID* SAMPLE_COMM_VENC_GetVencStreamProc(HI_VOID *p)
{
HI_S32 i;
//HI_S32 j=0;
HI_S32 s32ChnTotal;
VENC_CHN_ATTR_S stVencChnAttr;
SAMPLE_VENC_GETSTREAM_PARA_S *pstPara;
//HI_S32 maxfd = 0;
struct timeval TimeoutVal;
fd_set read_fds;
//HI_S32 VencFd[VENC_MAX_CHN_NUM];
HI_CHAR aszFileName[VENC_MAX_CHN_NUM][64];
//HI_CHAR aszFileName2[VENC_MAX_CHN_NUM][64];
//FILE *pFile[VENC_MAX_CHN_NUM];//自己注释
MP4FileHandle hMP4File[VENC_MAX_CHN_NUM];
MP4TrackId video[VENC_MAX_CHN_NUM];
char szFilePostfix[10];
VENC_CHN_STAT_S stStat;
VENC_STREAM_S stStream;
HI_S32 s32Ret;
VENC_CHN VencChn;
PAYLOAD_TYPE_E enPayLoadType[VENC_MAX_CHN_NUM];
pstPara = (SAMPLE_VENC_GETSTREAM_PARA_S*)p;
s32ChnTotal = pstPara->s32Cnt;
pthread_t pt=1;
/******************************************
step 1: check & prepare save-file & venc-fd
******************************************/
if (s32ChnTotal >= VENC_MAX_CHN_NUM)
{
SAMPLE_PRT("input count invaild\n");
return NULL;
}
for (i = 0; i < s32ChnTotal; i++)
{
/* decide the stream file name, and open file to save stream */
VencChn = i;
s32Ret = HI_MPI_VENC_GetChnAttr(VencChn, &stVencChnAttr);
if(s32Ret != HI_SUCCESS)
{FD_SET(VencFd, &read_fds);
SAMPLE_PRT("HI_MPI_VENC_GetChnAttr chn[%d] failed with %#x!\n", \
VencChn, s32Ret);
return NULL;
}
/* Set Venc Fd. */
VencFd = HI_MPI_VENC_GetFd(i);
if (VencFd < 0)
{
SAMPLE_PRT("HI_MPI_VENC_GetFd failed with %#x!\n",
VencFd);
return NULL;
}
if (maxfd <= VencFd)
{
maxfd = VencFd;
printf("macfd:%d\n",maxfd);
}
}
while(1)
{
int w=0;
int l_flag=0;
printf("mp4:%d\n",j);
for(i=0;i
{
sprintf(aszFileName, "video/stream_chn%d_%d%s", i,j,".mp4");
hMP4File= MP4CreateEx(aszFileName, 0, 1, 1, 0, 0, 0, 0);
if (hMP4File == MP4_INVALID_FILE_HANDLE)
{
printf("open mp4 file fialed.\n");
return NULL;
}
MP4SetTimeScale(hMP4File, 90000);
video= MP4AddH264VideoTrack(hMP4File, 90000, 90000 / 25, 3840, 2160,
0x64, //sps[1] AVCProfileIndication
0x00, //sps[2] profile_compat
0x1f, //sps[3] AVCLevelIndication
3); // 4 bytes length before each NAL unit
if (video == MP4_INVALID_TRACK_ID)
{
printf("add video mp4 track fialed.\n");
return NULL;
}
}
if(flag==1)
{
printf("pthread join\n");
while(flag);
printf("pthread go\n");
}
/******************************************
step 2: Start to get streams of each channel.
******************************************/
while (HI_TRUE == pstPara->bThreadStart)
{
FD_ZERO(&read_fds);
for (i = 0; i < s32ChnTotal; i++)
{
FD_SET(VencFd, &read_fds);
}
TimeoutVal.tv_sec = 2;
TimeoutVal.tv_usec = 0;
s32Ret = select(maxfd + 1, &read_fds, NULL, NULL, &TimeoutVal);
//printf("s32Ret:%d",s32Ret);
if (s32Ret < 0)
{
SAMPLE_PRT("select failed!\n");
break;
}
else if (s32Ret == 0)
{
SAMPLE_PRT("get venc stream time out, exit thread\n");
continue;
}
else
{
for (i = 0; i < s32ChnTotal; i++)
{
//printf("venc[%d]:",i);
if (FD_ISSET(VencFd, &read_fds))
{
/*******************************************************
step 2.1 : query how many packs in one-frame stream.
*******************************************************/
memset(&stStream, 0, sizeof(stStream));
s32Ret = HI_MPI_VENC_Query(i, &stStat);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VENC_Query chn[%d] failed with %#x!\n", i, s32Ret);
break;
}
if(0 == stStat.u32CurPacks)
{
SAMPLE_PRT("NOTE: Current frame is NULL!\n");
continue;
}
/*******************************************************
step 2.3 : malloc corresponding number of pack nodes.
*******************************************************/
stStream.pstPack = (VENC_PACK_S*)malloc(sizeof(VENC_PACK_S) * stStat.u32CurPacks);
if (NULL == stStream.pstPack)
{
SAMPLE_PRT("malloc stream pack failed!\n");
break;
}
/*******************************************************
step 2.4 : call mpi to get one-frame stream
*******************************************************/
stStream.u32PackCount = stStat.u32CurPacks;
s32Ret = HI_MPI_VENC_GetStream(i, &stStream, HI_TRUE);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
stStream.pstPack = NULL;
SAMPLE_PRT("HI_MPI_VENC_GetStream failed with %#x!\n",s32Ret);
break;
}
MP4WriteSample(hMP4File, video, stStream.pstPack[0].pu8Addr+stStream.pstPack[0].u32Offset,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset,MP4_INVALID_DURATION, 0, 1);
//printf("venc[%d]:%d\n",i,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset);
//printf("FD_ISSET success\n");
/*******************************************************
step 2.6 : release stream
*******************************************************/
//if(flag==0)
//{
s32Ret = HI_MPI_VENC_ReleaseStream(i, &stStream);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
printf("HI_SUCCESS != s32Ret free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
break;
}
// }
/*******************************************************
step 2.7 : free pack nodes
*******************************************************/
free(stStream.pstPack);
//printf("free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
}
/*for(i=0; i<2; i++)
{
VencChn = i*2;
VpssGrp = i;
SAMPLE_COMM_VENC_UnBindVpss(VencChn,VpssGrp,0);
VencChn++;
SAMPLE_COMM_VENC_UnBindVpss(VencChn,VpssGrp,1);
}*/ else
{
// printf("FD_ISSET fail\n");
}
}
if(w==1300)
{
flag=1;
}
if(flag==1&&l_flag==0)
{
printf("pthrad_begin\n");
pthread_create(&pt,0,vedio_recorde,NULL);
l_flag=1;
}
if(w==1500)
{
int VencChn,VpssGrp;
for (i = 0; i <4; i++)
{
//fclose(pFile);
MP4Close(hMP4File,0);
//printf("mp4 close\n");
}
break;
}
w++;
}
}
j++;
}
return NULL;
}
{
fd_set read_fds;
int i;
VENC_STREAM_S stStream;
VENC_CHN_STAT_S stStat;
MP4FileHandle hMP4File[2];
MP4TrackId video[2];
HI_CHAR aszFileName[2][64];
//HI_S32 VencFd[2];
HI_S32 s32Ret;
int w=0;
/*for(i=0;i<2;i++)
{
VencFd = HI_MPI_VENC_GetFd(i*2+1);
if (VencFd < 0)
{
SAMPLE_PRT("HI_MPI_VENC_GetFd failed with %#x!\n",VencFd);
return NULL;
}
if (maxfd <= VencFd)
maxfd = VencFd;
}*/
for(i=0;i<2;i++)
{
sprintf(aszFileName, "video/stream_chnxu%d_%d%s", i*2+1,j,".mp4");
hMP4File= MP4CreateEx(aszFileName, 0, 1, 1, 0, 0, 0, 0);
if (hMP4File == MP4_INVALID_FILE_HANDLE)
{
printf("open mp4 file fialed.\n");
return NULL;
}
MP4SetTimeScale(hMP4File, 90000);
video= MP4AddH264VideoTrack(hMP4File, 90000, 90000 / 25, 3840, 2160,
0x64, //sps[1] AVCProfileIndication
0x00, //sps[2] profile_compat
0x1f, //sps[3] AVCLevelIndication
3); // 4 bytes length before each NAL unit
if (video == MP4_INVALID_TRACK_ID)
{
printf("add video mp4 track fialed.\n");
return NULL;
}
}MP4Close(hMP4File, 0);
while(1)
{
FD_ZERO(&read_fds);
struct timeval TimeoutVal;
for (i = 0; i <2; i++)
{
FD_SET(VencFd[i*2+1], &read_fds);
}
TimeoutVal.tv_sec = 2;
TimeoutVal.tv_usec = 0;
s32Ret = select(maxfd + 1, &read_fds, NULL, NULL, &TimeoutVal);
//printf("s32Ret:%d",s32Ret);
if (s32Ret < 0)
{
SAMPLE_PRT("select failed!\n");
break;
}
else if (s32Ret == 0)
{
SAMPLE_PRT("get venc stream time out, exit thread\n");
continue;
}
else
{
for (i = 0; i <2; i++)
{
//printf("venc[%d]:",i);
if (FD_ISSET(VencFd[i*2+1], &read_fds))
{
/*******************************************************
step 2.1 : query how many packs in one-frame stream.
*******************************************************/
memset(&stStream, 0, sizeof(stStream));
s32Ret = HI_MPI_VENC_Query(i*2+1, &stStat);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VENC_Query chn[%d] failed with %#x!\n", i*2+1, s32Ret);
break;
}
HI_S32 s32Ret;
if(0 == stStat.u32CurPacks)
{
SAMPLE_PRT("NOTE: Current frame is NULL!\n");
continue;
}
/*******************************************************
step 2.3 : malloc corresponding number of pack nodes.
*******************************************************/
stStream.pstPack = (VENC_PACK_S*)malloc(sizeof(VENC_PACK_S) * stStat.u32CurPacks);
if (NULL == stStream.pstPack)
{
SAMPLE_PRT("malloc stream pack failed!\n");
break;
}
/*******************************************************
step 2.4 : call mpi to get one-frame stream
*******************************************************/
stStream.u32PackCount = stStat.u32CurPacks;
s32Ret = HI_MPI_VENC_GetStream(i*2+1, &stStream, HI_TRUE);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
stStream.pstPack = NULL;
SAMPLE_PRT("HI_MPI_VENC_GetStream failed with %#x!\n",s32Ret);
break;
}
MP4WriteSample(hMP4File, video, stStream.pstPack[0].pu8Addr+stStream.pstPack[0].u32Offset,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset,MP4_INVALID_DURATION, 0, 1);
if(w==1300)
{ printf("pthread w=%d\n");
flag=0;
}
//printf("HI_S32 VencFd[VENC_MAX_CHN_NUM];venc[%d]:%d\n",i,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset);
//printf("FD_ISSET success\n");
/*******************************************************
step 2.6 : release stream
*******************************************************/
//if(flag=1)
//{
s32Ret = HI_MPI_VENC_ReleaseStream(i*2+1,&stStream);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
SAMPLE_PRT("HI_MPI_VENC_ReleaseStream chn[%d] failed with %#x!\n", i*2+1, s32Ret);
stStream.pstPack = NULL;
break;
}
//}
/*******************************************************
step 2.7 : free pack nodes
*******************************************************/
free(stStream.pstPack);
//printf("free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
}
}
}
if(w==1500)
{
for (i = 0; i <2; i++)
{
MP4Close(hMP4File, 0);
//printf("mp4 close\n");
}
break;
}
w++;
}
printf("pthread over\n");
}
/******************************************************************************
* funciton : get stream from each channels and save them
******************************************************************************/
HI_VOID* SAMPLE_COMM_VENC_GetVencStreamProc(HI_VOID *p)
{
HI_S32 i;
//HI_S32 j=0;
HI_S32 s32ChnTotal;
VENC_CHN_ATTR_S stVencChnAttr;
SAMPLE_VENC_GETSTREAM_PARA_S *pstPara;
//HI_S32 maxfd = 0;
struct timeval TimeoutVal;
fd_set read_fds;
//HI_S32 VencFd[VENC_MAX_CHN_NUM];
HI_CHAR aszFileName[VENC_MAX_CHN_NUM][64];
//HI_CHAR aszFileName2[VENC_MAX_CHN_NUM][64];
//FILE *pFile[VENC_MAX_CHN_NUM];//自己注释
MP4FileHandle hMP4File[VENC_MAX_CHN_NUM];
MP4TrackId video[VENC_MAX_CHN_NUM];
char szFilePostfix[10];
VENC_CHN_STAT_S stStat;
VENC_STREAM_S stStream;
HI_S32 s32Ret;
VENC_CHN VencChn;
PAYLOAD_TYPE_E enPayLoadType[VENC_MAX_CHN_NUM];
pstPara = (SAMPLE_VENC_GETSTREAM_PARA_S*)p;
s32ChnTotal = pstPara->s32Cnt;
pthread_t pt=1;
/******************************************
step 1: check & prepare save-file & venc-fd
******************************************/
if (s32ChnTotal >= VENC_MAX_CHN_NUM)
{
SAMPLE_PRT("input count invaild\n");
return NULL;
}
for (i = 0; i < s32ChnTotal; i++)
{
/* decide the stream file name, and open file to save stream */
VencChn = i;
s32Ret = HI_MPI_VENC_GetChnAttr(VencChn, &stVencChnAttr);
if(s32Ret != HI_SUCCESS)
{FD_SET(VencFd, &read_fds);
SAMPLE_PRT("HI_MPI_VENC_GetChnAttr chn[%d] failed with %#x!\n", \
VencChn, s32Ret);
return NULL;
}
/* Set Venc Fd. */
VencFd = HI_MPI_VENC_GetFd(i);
if (VencFd < 0)
{
SAMPLE_PRT("HI_MPI_VENC_GetFd failed with %#x!\n",
VencFd);
return NULL;
}
if (maxfd <= VencFd)
{
maxfd = VencFd;
printf("macfd:%d\n",maxfd);
}
}
while(1)
{
int w=0;
int l_flag=0;
printf("mp4:%d\n",j);
for(i=0;i
{
sprintf(aszFileName, "video/stream_chn%d_%d%s", i,j,".mp4");
hMP4File= MP4CreateEx(aszFileName, 0, 1, 1, 0, 0, 0, 0);
if (hMP4File == MP4_INVALID_FILE_HANDLE)
{
printf("open mp4 file fialed.\n");
return NULL;
}
MP4SetTimeScale(hMP4File, 90000);
video= MP4AddH264VideoTrack(hMP4File, 90000, 90000 / 25, 3840, 2160,
0x64, //sps[1] AVCProfileIndication
0x00, //sps[2] profile_compat
0x1f, //sps[3] AVCLevelIndication
3); // 4 bytes length before each NAL unit
if (video == MP4_INVALID_TRACK_ID)
{
printf("add video mp4 track fialed.\n");
return NULL;
}
}
if(flag==1)
{
printf("pthread join\n");
while(flag);
printf("pthread go\n");
}
/******************************************
step 2: Start to get streams of each channel.
******************************************/
while (HI_TRUE == pstPara->bThreadStart)
{
FD_ZERO(&read_fds);
for (i = 0; i < s32ChnTotal; i++)
{
FD_SET(VencFd, &read_fds);
}
TimeoutVal.tv_sec = 2;
TimeoutVal.tv_usec = 0;
s32Ret = select(maxfd + 1, &read_fds, NULL, NULL, &TimeoutVal);
//printf("s32Ret:%d",s32Ret);
if (s32Ret < 0)
{
SAMPLE_PRT("select failed!\n");
break;
}
else if (s32Ret == 0)
{
SAMPLE_PRT("get venc stream time out, exit thread\n");
continue;
}
else
{
for (i = 0; i < s32ChnTotal; i++)
{
//printf("venc[%d]:",i);
if (FD_ISSET(VencFd, &read_fds))
{
/*******************************************************
step 2.1 : query how many packs in one-frame stream.
*******************************************************/
memset(&stStream, 0, sizeof(stStream));
s32Ret = HI_MPI_VENC_Query(i, &stStat);
if (HI_SUCCESS != s32Ret)
{
SAMPLE_PRT("HI_MPI_VENC_Query chn[%d] failed with %#x!\n", i, s32Ret);
break;
}
if(0 == stStat.u32CurPacks)
{
SAMPLE_PRT("NOTE: Current frame is NULL!\n");
continue;
}
/*******************************************************
step 2.3 : malloc corresponding number of pack nodes.
*******************************************************/
stStream.pstPack = (VENC_PACK_S*)malloc(sizeof(VENC_PACK_S) * stStat.u32CurPacks);
if (NULL == stStream.pstPack)
{
SAMPLE_PRT("malloc stream pack failed!\n");
break;
}
/*******************************************************
step 2.4 : call mpi to get one-frame stream
*******************************************************/
stStream.u32PackCount = stStat.u32CurPacks;
s32Ret = HI_MPI_VENC_GetStream(i, &stStream, HI_TRUE);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
stStream.pstPack = NULL;
SAMPLE_PRT("HI_MPI_VENC_GetStream failed with %#x!\n",s32Ret);
break;
}
MP4WriteSample(hMP4File, video, stStream.pstPack[0].pu8Addr+stStream.pstPack[0].u32Offset,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset,MP4_INVALID_DURATION, 0, 1);
//printf("venc[%d]:%d\n",i,stStream.pstPack[0].u32Len-stStream.pstPack[0].u32Offset);
//printf("FD_ISSET success\n");
/*******************************************************
step 2.6 : release stream
*******************************************************/
//if(flag==0)
//{
s32Ret = HI_MPI_VENC_ReleaseStream(i, &stStream);
if (HI_SUCCESS != s32Ret)
{
free(stStream.pstPack);
printf("HI_SUCCESS != s32Ret free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
break;
}
// }
/*******************************************************
step 2.7 : free pack nodes
*******************************************************/
free(stStream.pstPack);
//printf("free stStream.pstPack--%d\n",i);
stStream.pstPack = NULL;
}
/*for(i=0; i<2; i++)
{
VencChn = i*2;
VpssGrp = i;
SAMPLE_COMM_VENC_UnBindVpss(VencChn,VpssGrp,0);
VencChn++;
SAMPLE_COMM_VENC_UnBindVpss(VencChn,VpssGrp,1);
}*/ else
{
// printf("FD_ISSET fail\n");
}
}
if(w==1300)
{
flag=1;
}
if(flag==1&&l_flag==0)
{
printf("pthrad_begin\n");
pthread_create(&pt,0,vedio_recorde,NULL);
l_flag=1;
}
if(w==1500)
{
int VencChn,VpssGrp;
for (i = 0; i <4; i++)
{
//fclose(pFile);
MP4Close(hMP4File,0);
//printf("mp4 close\n");
}
break;
}
w++;
}
}
j++;
}
return NULL;
}
我来回答
回答4个
时间排序
认可量排序
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2014-10-15 17:42:58
-
2020-03-02 18:55:57
-
2019-05-13 11:29:57
-
42023-01-31 09:39:59
-
2017-02-23 10:16:53
-
2019-01-22 17:37:15
-
2019-01-13 10:52:28
-
2022-10-13 15:30:27
-
2017-08-12 19:03:33
-
2019-01-16 15:25:30
-
2017-04-25 09:49:39
-
2018-09-25 13:32:31
-
2016-04-29 10:35:58
-
2019-01-15 09:39:20
-
2018-10-14 09:10:44
-
2019-01-09 11:00:57
-
2018-10-18 09:19:52
-
2019-01-23 13:34:19
-
2017-03-17 10:34:49
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5SS928的emmc有32GB,bootargs设置使用16GB,但是为啥能用的只有rootfs的大小
-
33SS928怎样烧写ubuntu系统
-
10ToolPlatform下载rootfs提示网络失败
-
10谁有GK7205V500的SDK
-
5Hi3516CV610 烧录不进去
-
10Hi3559AV100 芯片硬解码h265编码格式的视频时出现视频播放错误,解码错误信息 s32PackErr:码流有错
-
5海思SS928 / SD3403的sample_venc.c摄像头编码Demo中,采集到的摄像头的YUV数据在哪个相关的函数中?
-
5海鸥派openEuler无法启动网卡,连接WIFI存在问题
-
66有没有ISP相关的巨佬帮忙看看SS928对接IMX347的图像问题
-
50求助hi3559与FPGA通过SLVS-EC接口对接问题
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认