Qt 如何修复使用mplayer on frame buffer播放的电影周围的视频闪烁?
我正在运行一个qt嵌入式应用程序和mplayer,它们都在帧缓冲区上 当我开始通过mplayer播放视频时,我会在电影周围看到很多闪烁 请看以下电影:Qt 如何修复使用mplayer on frame buffer播放的电影周围的视频闪烁?,qt,embedded-linux,mplayer,Qt,Embedded Linux,Mplayer,我正在运行一个qt嵌入式应用程序和mplayer,它们都在帧缓冲区上 当我开始通过mplayer播放视频时,我会在电影周围看到很多闪烁 请看以下电影: 如何修复?对于使用QWS的qt4,用于直接写入帧缓冲区的嵌入式linux图形子系统,在调用mplayer之前,您可以在-QWS服务器的GUI线程中运行以下命令: QWSServer *server = QWSServer::instance(); if(server) server->enablePainting(false);
如何修复?对于使用QWS的qt4,用于直接写入帧缓冲区的嵌入式linux图形子系统,在调用
mplayer
之前,您可以在-QWS服务器的GUI线程中运行以下命令:
QWSServer *server = QWSServer::instance();
if(server)
server->enablePainting(false); // Suspend Qt's drawing.
您可以使用SIGCHLD或其他工具来确定mplayer
何时完成并重新绘制。另一种方法是定位mplayer的
输出窗口,并使用命令告诉Qt不要在那里绘制
QWS和
mplayer
都打开帧缓冲区并直接绘制到它。无法封送对显示设备的访问。QWS子系统允许多个Qt应用程序同时绘制到屏幕上。但是,它无法控制访问帧缓冲区的其他进程。因此,可以使用X11或其他显示管理器,如etc。这通常是在Qt5中使用的方法。对不起,我将Qt4.7.4与QWS一起使用。你的指示并不能解决这个问题。问题的根源可能与其他事情有关。我想你可能不理解我的评论,所以我留下了答案。我很确定这是你的问题;我也有同样的问题,我看过你的视频。您也可以只循环fbv
或其他内容,然后看到同样的情况发生。我认为你屏幕上的一些QWidget正在周期性地重新绘制。由于mplayer
以大约30倍/秒的速度绘制,因此在绘制和重新绘制时,您会看到一个闪光。您可以为mplayer
提供视频大小参数,这也可以解决您的问题。您可以使用fbdump
捕获屏幕截图,或者类似于ddif=/dev/fb0 of=test.scr bs=480 count=320的内容