我认为你误解了每个班级的作用。您是QAbstractVideoSurface的子类,它应该帮助访问准备好呈现的数据。在本方法中,为您提供已解码的QVideoFrame。如果您想在屏幕上显示此内容,则需要在VideoSurface类中实现它。
您可以在QMediaPlayer上设置VideoSurface,并且媒体播放器已经处理了视频的解码和像素格式的协商。您在VideoSurface的礼物中收到的QVideoFrame已经具有来自媒体播放器的高度/宽度和像素格式。媒体播放器的典型用途是让它加载和解码文件,并使用视频小部件在屏幕上显示。
如果你需要使用你自己的自定义ffmpeg解码器,我的建议是将帧从yuv420转换为rgb(libswscale?),创建你自己的自定义小部件,你也可以传递帧数据,你可以使用QPainter在屏幕上渲染它将其加载到QPixmap中。