在ARM板上执行Qt程序,用QProcess播放Mplayer视频,视频外空白处一直闪屏

Yvette_QIU 2020-11-23 09:33:24
我遇到的问题是:
在ARM板运行我的VideoPlayer程序,发现,该程序执行结果 与Linux系统内执行的不同,视频播放时一直固定在Qt程序上方,而不是在Qt程序的指定窗口Widget内播放,所以出现这样一种情况:视频每一帧播放,视频外的空白处会出现(黑色与透明色之间)闪动!!!
我查看很多文章,有的说“-wid <窗口标识>”这个参数对于ARM板是无效的,是真是假,闪屏这件事儿,一直都没法解决,小弟无计可施了,请大神们在此不吝赐教呀!!!非常感谢~



环境:
Mplayer1.3.0版本,
“查看ARM板系统名称及其内核版本:Linux cqr40 3.10.108 #8 SMP Thu Sep 10 16:26:42 CST 2020 armv7l GNU/Linux”
——使用的是CQR40核心板、全志T3板、armV7L,
用的交叉工具链是arm-linux-gcc 5.4.0版本,
系统用Linux(3.10)Qt(5.8),
支持Linux标准的FrameBuffer。
这是我Qt项目:

代码在这篇文章里:https://blog.csdn.net/qq_41042595/article/details/110004111
在mainwindow.cpp源文件中的主要代码:

构造函数中:
this->process = new QProcess;
this->process->setProcessChannelMode(QProcess::MergedChannels);
arg = "/usr/bin/mplayer";//在Linux系统中安装Mplayer之后,将作用于play()函数的start()

play()中:
QStringList arg1;
this->process->kill();
this->process=new QProcess;
arg1 << fileName;
arg1 << "-slave";//默认情况下,mplayer接受键盘的命令,而"-slave"使其不再接受键盘事件,而是作为后台程序运行,
//接受以“\n”结束的命令控制,这样我们可以在进程中给他发送命令,而不需要操作键盘了.
arg1 << "-quiet"; //尽可能的不打印播放信息
// arg1 << "-fs";
arg1 << "-zoom";//视频居中,四周黑条,全屏播放(好像是默认值
arg1 << "-x";
arg1 << "720";//指定视频x方向是720大小,y方向是576大小
arg1 << "-y";
arg1 << "576";
arg1 << "-wid" << QString::number((unsigned int)(ui->widget->winId()));
// "-wid <窗口标识>" 是指让MPlayer依附于那个窗口,
//ui->widget->winId() 这个指令就是用来获取widget的标识码 ,
//这样视频播放的时候,就在这个部件里播放,相当于给他固定起来。

connect(this->process,SIGNAL(readyReadStandardOutput()),this,SLOT(dataReceive()));
this->process->start(arg,arg1); //开始播放进程

dataReceive()中:
作用为接收信息——从打印信息中接收“视频总时长、进度百分比,视频当前时长”
...全文
1594 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yvette_QIU 2021-01-07
  • 打赏
  • 举报
回复 1
OK,自己解决了,,,以前这个问题的帖子都没有回答解决方案,不知道我这帖子算不算第一个提出解决方案的,我为此,写了篇文https://blog.csdn.net/qq_41042595/article/details/112308184,有什么问题请到文章的讨论区进行讨论,peace and love!
Yvette_QIU 2020-11-24
  • 打赏
  • 举报
回复
没大神回复吗?这问题苦恼了我一周半了,

16,902

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧