ffmpeg读取文件速度的控制
at 5个月前 ca FFmpeg pv 616 by touch
两种方法:
(1)根据采样率算出每帧播放时间t,然后sleep(t);笨办法
(2)根据读取的AVpacket的pts控制速度,核心思想:将ffmpeg的pts转换成系统时间,然后比较当前时间和读取的pts时间,差值即为控制的因素
1、获取启动时间,start_time = av_gettime();
2、转换avpacket的pts
AVRational time_base = m_pFormatContext->streams[m_audioStream]->time_base; AVRational time_base_q = { 1, AV_TIME_BASE }; int64_t pts_time = av_rescale_q(m_pPacket->pts, time_base, time_base_q);
3、获取差值
int64_t now_time = av_gettime() - start_time;
4、sleep
if (pts_time > now_time) av_usleep(pts_time - now_time);
版权声明
本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。