最简单的使用Qprocess调用外部mplayer.exe的方法,以下是一个简单的例子:
void MainWindow::showMplayer() {
const QString mplayerPath("D:/Download/MPlayer-1.0rc2/MPlayer-1.0rc2/mplayer.exe");
QStringList args;
args << "D:/Documents and Settings/Project/release/test.avi";
QProcess *myProcess = new QProcess;
myProcess->start(mplayerPath, args);
}
接下来,比较复杂,我不仅调用外部mplayer.exe的方法,而且还要将播放窗口放到Qt Widget。这时必须使用mplayer 的-wid参数,这可以将mplayer输出流重定向的指定的窗体(这里就是我们所要的Qt Widget)。同时我们也可以设定一些mplayer的参数。注意:QWidget::winId() returns an HWND not an int.所以要使用类似QString::number(reinterpret_cast<qlonglong>(wd->winId()))的语句。还有一点,mplayer的configure里的GUI必须disable,不然也无法将mplayer输出流定向到Qt Widget上。以下是一个简化的例子:
void MainWindow::showMplayer() {
QWidget *wd = new QWidget(this);
const QString mplayerPath("D:/Download/MPlayer-1.0rc2/MPlayer-1.0rc2/mplayer.exe");
QStringList args;
args << " -wid" << QString::number(reinterpret_cast<qlonglong>(wd->winId()));
args <<" D:/Documents and Settings/Project/release/test.avi";
QProcess *myProcess = new QProcess(this);
myProcess->start(mplayerPath,args);
wd->show();
}
1 条评论:
我在Linux下将MPlayer嵌入到Qt中用于播放视频,但是和其他多个媒体信息进行混合播放的时候,有时MPlayer的视频画面会消失,不知道搂主遇到过没有阿,交流一下如何? tonyki@citiz.net
发表评论