我正在开发一个示例 GStreamer 应用程序来播放 MPEG2TS 视频。
我的管道是:
应用程序!h264解析!ffdec_h264 !ffmpeg色彩空间!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)
上述日志不断重复。我没有任何线索,为什么会发生这种情况?任何输入将不胜感激。
在此先感谢,克兰蒂