查看完整版本: [-- 急急急!!!在ARM板上执行Qt程序,用QProcess播放Mplayer视频,视频外空白处一直闪屏 --]

QTCN开发网 -> Qt嵌入式开发 -> 急急急!!!在ARM板上执行Qt程序,用QProcess播放Mplayer视频,视频外空白处一直闪屏 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

活着の風 2020-11-27 10:18

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

我遇到的问题是:
在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()中:
作用为接收信息——从打印信息中接收“视频总时长、进度百分比,视频当前时长”






查看完整版本: [-- 急急急!!!在ARM板上执行Qt程序,用QProcess播放Mplayer视频,视频外空白处一直闪屏 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled