windows Qt 调不起mplayer播放器

申缘 发布于 2018/08/08 12:07
阅读 323
收藏 0

各位网友大家好,请教一下,鄙人在使用Qt调用mplayer播放器的时候,调不起mplayer播放器,但是使用cmd命令,贴换到mplayer.exe文件路径下,执行命令:mplayer xxx.flv;即可出现播放界面。

本人Qt代码如下:

1、mplayer.h文件代码

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_mplayer.h"
#include <QProcess>

namespace Ui{
    class mplayer;
}

class mplayer : public QMainWindow
{
    Q_OBJECT

public:
    explicit mplayer(QWidget *parent = Q_NULLPTR);
    ~mplayer();
    void play();

private:
    Ui::mplayer *ui;
    QProcess *process;
};

2、mplayer.cpp文件代码

#include "mplayer.h"
#include <QDir>
#include <qDebug>
#include <QMessageBox>

mplayer::mplayer(QWidget *parent)
	: QMainWindow(parent), ui(new Ui::mplayer)
{
	ui->setupUi(this);
	process = new QProcess(this);
	process->setProcessChannelMode(QProcess::MergedChannels); //这个一定要设置
	play();
}

mplayer::~mplayer(){
	delete ui;
}

void mplayer::play(){
	QString filepath = QDir::toNativeSeparators("live.1530031170951.flv");
	QString mplayerpath = QDir::toNativeSeparators("mplayer.exe");

	QStringList args;
	args << "-slave";        //使用slave模式
	args << "-quiet";        //不要输出冗余信息
	args << "-wid" << QString::number(ui->playwidget->winId());        //将输出定位到ui下的widget窗口内
	args << "-zoom";        //自适应窗口
	args << "-vo";
	args << "x11";        //使用x11模式播放(只有这种模式下才支持23行的指定输出窗口到ui->widget)
	args << filepath;        //播放file_name

	process->start(mplayerpath, args);        //启动该进程,并传入参数args
}

mplayer.exe文件和视频文件都在代码同一目录下。

3、mplayer.ui文件:

4、运行结果:

问题:

1、出现大量的mplayer.exe进程(这个进程是用Qt写的demo进程,不是mplayer播放进程,只是同名而已。)

2、不能播放视频。

请教一下各位网友,是什么问题???

 

 

加载中
0
h
hgoldfish

我猜是因为你的程序跟 mplayer 同名,结果就是调用的时候再次调用了你这个程序,然后你程序又要启动新的 mplayer,就会不断地产生 mplayer 进程了。

返回顶部
顶部