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);


版权声明

本文仅代表作者观点,不代表码农殇立场。
本文系作者授权码农殇发表,未经许可,不得转载。

 

扫一扫在手机阅读、分享本文

冀ICP备14009681号-2 Powered By 码农殇 Theme By zb脚本
您是本站第1493名访客 今日有0篇新文章