修改视频帧并将其发送回视频输出流 我目前正在尝试用Qt解决C++中的一个问题。 我试图从运行在QMediaPlayer输出流中的视频中获取视频帧,并将灰度添加到该帧,然后将其发送回mediaplayer的视频输出流

修改视频帧并将其发送回视频输出流 我目前正在尝试用Qt解决C++中的一个问题。 我试图从运行在QMediaPlayer输出流中的视频中获取视频帧,并将灰度添加到该帧,然后将其发送回mediaplayer的视频输出流,c++,qt,C++,Qt,抓取视频帧-->将灰度添加到帧-->发送回输出流 现在我可以在QT中使用QVideoFrame抓取视频帧并对其进行修改。但是,我不确定如何将其发送回媒体播放器输出流。我正在浏览QT源代码,但到目前为止没有运气 同样的问题可以用QML来解决,但是我不想继续使用QML,而是用C++来解决这个问题。 我希望这里有人能想出办法。 谢谢你使用 引用文件: QAbstractVideoSurface类定义了视频制作者用于与视频演示表面交互操作的标准接口。您可以将此接口子类化,以便从解码媒体或照相机等源接收视

抓取视频帧-->将灰度添加到帧-->发送回输出流

现在我可以在QT中使用QVideoFrame抓取视频帧并对其进行修改。但是,我不确定如何将其发送回媒体播放器输出流。我正在浏览QT源代码,但到目前为止没有运气

同样的问题可以用QML来解决,但是我不想继续使用QML,而是用C++来解决这个问题。 我希望这里有人能想出办法。 谢谢你使用

引用文件:

QAbstractVideoSurface类定义了视频制作者用于与视频演示表面交互操作的标准接口。您可以将此接口子类化,以便从解码媒体或照相机等源接收视频帧,以执行您自己的处理


此外,还简要介绍了如何使用此类。

嘿,谢谢您的快速回复。我试过使用Qabstracta。但是,如果您看到链接“”中提到的源代码,函数bool present将视频帧定义为常量,因此我无法修改帧。有解决办法吗?@AyushGupta很遗憾,你不能直接修改它,但是你可以复制视频帧的像素内容,然后在其他地方处理它。您需要调用
QVideoFrame::map()
,然后通过
QVideoFrame::bits()
访问像素内容。这里有一个很好的例子来回答。谢谢你的帮助,从链接中我了解到框架是作为一个图像绘制到标签中的。有没有办法将这个QImage添加到QMediaPlayer中?@AyushGupta正如我前面提到的,你不能将帧发送回流。预期用途是在其他地方使用获取的帧,例如设置
QLabel
的pixmap。我现在明白了,非常感谢您为我清除了这个问题。