首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用PTS同步FFMPEG视频帧

利用PTS同步FFMPEG视频帧
EN

Stack Overflow用户
提问于 2014-09-14 20:56:47
回答 1查看 2.5K关注 0票数 4

我试图同步从MP4视频解码的帧。我在使用FFMPEG库。我已经解码并存储了每一帧,并成功地在OPENGL平面上显示了视频。

我在通过帧之前启动了一个计时器,目的是正确地同步视频。然后,我将每个帧的PTS与此定时器进行比较。在解码过程中,我存储了从数据包接收到的PTS。

在我的应用程序中显示的内容似乎没有按我预期的速度播放。它的播放速度比媒体播放器中的原始视频文件要快。

我对FFMPEG和一般的视频编程缺乏经验。我是不是用错误的方法处理这件事?

下面是我试图做的事情的一个例子

代码语言:javascript
复制
            FrameObject frameObject = frameQueue.front();

            AVFrame frame = *frameObject.pFrame;

            videoClock += dt;

            if(videoClock >= globalPTS)
            {
                //Draw the Frame to a texture
                DrawFrame(&frame, frameObject.m_pts);

                frameQueue.pop_front();

                globalPTS = frameObject.m_pts;
            }

请注意,我正在使用C++、Windows、Opengl、FFMPEG和VS2010 IDE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 18:13:52

首先,使用int64_t pts = av_frame_get_best_effort_timestamp(pFrame)获取文本。其次,您必须确保同步的两个流都使用相同的时间基。最简单的方法是将所有内容转换为AV_TIME_BASE_Q. pts = av_rescale_q ( pts, formatCtx->streams[videoStream]->time_base, AV_TIME_BASE_Q );,以这种格式表示,pts以纳秒为单位。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25837947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档