qt 调用 mplayer

这篇博客介绍了如何在Windows环境下使用Qt调用mplayer播放视频,包括在QT之外打开mplayer窗口以及在QT窗口内集成mplayer的实现方式。示例代码展示了创建一个PlayerWidget,利用QProcess和mplayer的-wid参数将视频流重定向到Qt窗口,并提供了播放、暂停等功能的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://www.programbbs.com/doc/4573.htm

 

如果是想在QT之外打开一个mplayer窗口就很容易:

const QString mplayerPath(/"D:/tools/mplayer/mplayer.exe/");
QStringList args; 
args<</"2.avi/";
QProcess* myProcess=new QProcess;
myProcess->start(mplayerPath,args);
如果是想在QT的窗口里用mplayer,就像smplayer那像,这可不是件容易的事。
在网上只找到一上法文的例子:http://doc.qtfr.org/post/2007/03/21/Un-conteneur-pour-MPlayer-utilisation-de-QProcess 用QProcess实现的。可用google英文翻译后阅读。
代码在:http://doc.qtfr.org/public/2007/qt_mplayer.tar.gz 
我在windows下实验成功。

也可以研究一下smplayer的源码。大体思想是(别人总结的,跟上面的例子一样):
发现mplayer的参数-wid可以把输出流重定向的指定的窗体,通过winId()得到窗体的id即可,但是我不知道视频流或者说外部显示的数据是怎么在Qwidget上呈现的。

这是那个法国人的例子程序,我加了些comment,注意要把2.avi放到release文件夹下,执行可执行程序,而不是编译后点运行:

 

#include <QApplication>
#include <QProcess> 
#include <QVBoxLayout>
#include <QLayoutItem>
#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QColor>
#include <QRect>
#include <QLinearGradient>
#include <QSizePolicy>
#include <QPushButton>
#include <QTextEdit>
#include <QSlider>
#include <QCloseEvent>
#include <QTimer>

#ifdef Q_OS_WIN32
const QString mplayerPath(/"D:/tools/mplayer/mplayer.exe/");
#else
const QString mplayerPath(/"/usr/bin/mplayer/");
#endif
const QString movieFile(/"2.avi/");

class PlayerWidget: public QWidget
...{
    Q_OBJECT

private:
    QPushButton *controller;
    QWidget *renderTarget;
    QProcess *mplayerProcess; //main thing
    bool isPlaying;
    QSlider *timeLine;
    QTimer *poller;
    QTextEdit *log;
    
public:
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值