天天看点

Qt简单编程--给裸体的MPlayer披件衣服变成自己的播放器

很很佩服那些开发免费自由软件的工程师,他们发布自由软件,我毫无贡献地很不好意思地把它拿来用,给个界面就是自己的软件,如果脸皮再厚点就可以自己的名义发布出去,就象给裸体的自由软件披件外衣,这就是MPlayer。

想一边看视频一边打字记录,要求播放器很方便暂停重复等,当然结果是找不到这样的播放器,当然最后就想到自己做一个。

用Qt自带功能是很难很复杂实现,这不符合我的“简单”要求。竟然发现有一简单的途径能实现我的要求,它就是MPlayer,简单地说就是以Slave的方式运行MPlayer,通过QProcess来控制它。

Qt简单编程--给裸体的MPlayer披件衣服变成自己的播放器

使用MPlayer来播放,在Qt中很简单。

  1. 定义一个QWidget作为播放窗口。
  2. 定义一个QProcess来控制MPlyaer。
  3. 使用MPlayer的Slave命令来控制播放。

在头文件中定义。

QWidget *qw_mplay;
QProcess *qp_mplay;
           

初始化上面的东东。

qw_mplay = new QWidget(this);
    qp_mplay = new QProcess(this);
    qw_mplay->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
    qw_mplay->setAttribute(Qt::WA_OpaquePaintEvent );
    qw_mplay->setMinimumSize(, );
    qw_mplay->move(,+);
           

定义Mplayer的路径与要播放的视频文件。

const QString mplayerPath("MPlayer-corei7/mplayer.exe");
const QString movieFile("02.rmvb");
           

播放视频文件。

QStringList args; //运行mplayer需要的参数
    args << "-slave";
    args << "-quiet";
    args << "-wid" << QString::number(qw_mplay->winId());
    args << "-vo" << "directx:noaccel";
    args << movieFile;
    qp_mplay->setProcessChannelMode(QProcess::MergedChannels);
    qp_mplay->start(mplayerPath, args); //开始运行这个进程
           

由于简单,它没有暂停,快进,快退,停止等功能。

继续阅读