gstreamer和Qt与ARM上的nvidia

问题描述:

我为我的ARM板交叉编译Qt 5.5.1,并试图使用gstreamer和Qt播放视频文件。我有gstreamer上的以下管道工作正常。gstreamer和Qt与ARM上的nvidia

gst-launch-1.0 filesrc location=tracked.mp4 ! 
qtdemux name=demux demux.video_0! queue ! h264parse ! omxh264dec ! 
nveglglesink -e 

现在,我尝试与视频播放器实例使用Qt多媒体来播放相同的视频和我得到的灰度该影片,但在整个屏幕上重复4次。我不确定为什么,但是我的ARM主板确实有4个处理器。请参阅附件截图。

enter image description here

有没有人碰到这个问题,也许对如何使用Qt成功运行的GStreamer等管道的想法?

Qt示例通常使用decodebinplaybin播放视频。
因此,Qt播放视频与您的管道不同并不是不正常的。
尝试使用decodebinplaybin在GStreamer中播放此视频,并检查是否出现相同的现象。

还有一点是你使用nveglglesink作为流水线,但Qt总是使用它自己的sink元素(qtvideorendersink或某些东西)。
有可能您的解码格式不能很好地通过qt接收器处理。
“Gray and duplicate images”现象通常会发生,因为sink元素不能正确处理格式)。
如果是这样,在发送到Qt接收器之前转换为其他格式可能会解决它。

+0

感谢您的回复。至少这个gstreamer管道工作正常:'gst-launch-1.0 filesrc location = tracked.mp4!解码器! nveglglessink'。是否可以轻松地为QT创建gstreamer管道? – Luca

+0

@Luca:是的,可以轻松更改默认的GStreamer管道。它应该在qtmultimedia(IIRC,它应该是MediaPlayer)内的某个地方。但请记住,您的更改也会影响其他Qt应用程序。 –