很很佩服那些开发免费自由软件的工程师,他们发布自由软件,我毫无贡献地很不好意思地把它拿来用,给个界面就是自己的软件,如果脸皮再厚点就可以自己的名义发布出去,就象给裸体的自由软件披件外衣,这就是MPlayer。
想一边看视频一边打字记录,要求播放器很方便暂停重复等,当然结果是找不到这样的播放器,当然最后就想到自己做一个。
用Qt自带功能是很难很复杂实现,这不符合我的“简单”要求。竟然发现有一简单的途径能实现我的要求,它就是MPlayer,简单地说就是以Slave的方式运行MPlayer,通过QProcess来控制它。
使用MPlayer来播放,在Qt中很简单。
- 定义一个QWidget作为播放窗口。
- 定义一个QProcess来控制MPlyaer。
- 使用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(640, 400);
qw_mplay->move(10,80+10);
定义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); //开始运行这个进程
由于简单,它没有暂停,快进,快退,停止等功能。