ffmpeg在android平台录制视频编码时间戳问题

弛简 2015-08-12 02:18:49
在android平台下使用ffmpeg库进行摄像头采集视频录制编码,对每一帧,时间戳怎么设置?

JNIEXPORT jint JNICALL Java_com_hua_cameraandroidtest_MainActivity_videostart(JNIEnv * env, jclass obj,jbyteArray yuvdata)
{
int frameFinished=0,size=0;
jbyte *ydata = (jbyte*)(*env)->GetByteArrayElements(env, yuvdata, 0);

av_init_packet(&avpkt);
avpkt.data = NULL; // packet data will be allocated by the encoder
avpkt.size = 0;

uint8_t* picture_buf;
int size1 = avpicture_get_size(pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height);
picture_buf = (uint8_t*)av_malloc(y_size);
if (!picture_buf)
{
av_free(yuv420pframe);
}
avpicture_fill((AVPicture*)yuv420pframe, picture_buf, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height);

yuv420pframe->pts = count;
yuv420pframe->data[0] = ydata; //PCM Data
yuv420pframe->data[1] = ydata+ y_size; // U
yuv420pframe->data[2] = ydata+ y_size*5/4; // V

size = avcodec_encode_video2(pCodecCtx, &avpkt, yuv420pframe, &frameFinished);
count++;
if (size < 0) {
LOGE("+++++Error encoding frame\n");
return -1;
}
if(frameFinished)
fwrite(avpkt.data,1,avpkt.size,video_file);
LOGE("JNICALL Java_com_hua_cameraandroidtest_MainActivity_videostart9");
av_free_packet(&avpkt);
(*env)->ReleaseByteArrayElements(env, yuvdata, ydata, 0);
}
这个是对每一帧编码函数,就是不知道怎么设置时间戳,倒是录制完成之后,播放没有时间显示。
...全文
241 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjuanan 2015-11-04
  • 打赏
  • 举报
回复
求方案!!!
弛简 2015-08-19
  • 打赏
  • 举报
回复
已解决!!!

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧