ffmpeg的pts之解析
  ssdBcskP7cCp 2023年11月02日 35 0


1 log打印

video_thread()函数 ,每获取一个frame就打印一下log

duration = (frame_rate.num && frame_rate.den ? av_q2d((AVRational){frame_rate.den, frame_rate.num}) : 0);
pts = (frame->pts == AV_NOPTS_VALUE) ? NAN : frame->pts * av_q2d(tb);
printf("****video lee pts1:%lf ,frame->pts:%llu ,tb:(%d,/ %d)\n", pts,frame->pts,tb.num,tb.den);

audio_thread()函数 ,每获取一个frame就打印一下log

af->pts = (frame->pts == AV_NOPTS_VALUE) ? NAN : frame->pts * av_q2d(tb);
af->pos = frame->pkt_pos;
af->serial = is->auddec.pkt_serial;
af->duration = av_q2d((AVRational){frame->nb_samples, frame->sample_rate});
printf("****audio lee pts1:%lf ,frame->pts:%llu \n", af->pts,frame->pts);
av_frame_move_ref(af->frame, frame);
frame_queue_push(&is->sampq);

我们在拿到frame(AVFrame 类型)里面有个变量pts,顾名思义:是的时间显示,但是这个并不是时间为单位的数值,是可以转换成时间的数值,需要用 frame->pts * av_q2d(tb)得到

2 frame->pts 和 av_q2d(tb)

frame->pts :时间计数
av_q2d(tb) :时间基数


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  b1UHV4WKBb2S   2023年11月13日   38   0   0 ide抗锯齿
  b1UHV4WKBb2S   2023年11月13日   32   0   0 裁剪ideflutter
  zSWNgACtCQuP   2023年11月13日   29   0   0 ide
ssdBcskP7cCp