如何修复在帧缓冲区上使用mplayer播放的电影周围的视频闪烁?

时间:2013-06-25 08:58:25

标签: qt embedded-linux mplayer

我正在运行一个qt嵌入式应用程序和mplayer,它们都是在framebuffer上运行。

当我开始通过mplayer播放视频时,我在电影周围得到了很多闪烁。

请参阅以下电影:

http://youtu.be/kbKpfjLHzTY

如何解决?

1 个答案:

答案 0 :(得分:1)

Qt 4 QWS ,用于直接写入帧缓冲区的嵌入式linux图形子系统可以运行以下命令在调用mplayer之前 -qws 服务器的GUI线程

QWSServer *server = QWSServer::instance(); 
if(server) 
   server->enablePainting(false); // Suspend Qt's drawing. 

您可以使用 SIGCHLD 或其他内容来确定mplayer何时完成以及可重复绘画。另一种方法是定位mplayer's输出窗口并使用QWSEmbedWidget告诉 Qt 不要在那里画画。

QWS mplayer都会打开帧缓冲区并直接绘制到它。没有什么可以编组访问显示设备。 QWS 子系统允许多个 Qt 应用程序同时绘制到屏幕上。但是,它无法控制访问帧缓冲区的其他进程。因此,可以使用 X11 或其他显示管理器,例如Wayland等。这通常是在 Qt5 中使用的方法。