FFDEC_H264丢弃非关键帧

时间:2013-04-10 10:45:46

标签: iframe ffmpeg gstreamer

我正在开发一个示例GStreamer应用程序来播放MPEG2TS视频。

我的管道是:

  

appsrc! h264parse! ffdec_h264! ffmpegcolorspace! ximagesink

如果我在没有设置任何时间戳的情况下抽取数据,则会播放所有帧

videoBuffer = gst_app_buffer_new (rawVideo, bufSize, test_free_video, rawVideo);

但是如果我将时间戳设置为缓冲区,则只会播放I帧:

videoBuffer = gst_app_buffer_new (rawVideo, bufSize, test_free_video, rawVideo);
GST_BUFFER_TIMESTAMP(videoBuffer)  = calc_timestamp(rawVideo);

calc_timestamp()是根据PES标题信息计算时间戳的函数

来自GST_LOGS:

Dropping non-keyframe (seek/init)
Dropping non-keyframe (seek/init)
Dropping non-keyframe (seek/init)

以上日志正在重复进行。我没有任何线索,为什么会这样?任何意见都将不胜感激。

提前致谢, Kranti

1 个答案:

答案 0 :(得分:0)

最后我发现了问题。计算非密钥[p / b]帧的时间戳时出现问题,因为解码器正在丢弃所有非关键帧。

如果您遇到与我相同的问题,请重新检查发送给解码器的帧的时间戳计算