Qt5下QProcess + MPlayer实现QT音乐播放类

本文介绍如何在Qt5环境下利用QProcess调用MPlayer来实现音乐播放功能,详细阐述了选用QProcess的原因,QProcess调用MPlayer的步骤,以及如何控制播放并读取MPlayer反馈信息。并提供了音乐播放类的源码文件mplayercall.h和mplayercall.cpp供参考。
摘要由CSDN通过智能技术生成

Qt5下QProcess + MPlayer实现QT音乐播放类


一、使用QProcess来调用MPlayer原因

起初由于使用的Qt5,Qt5多媒体播放使用的QMediaPlayer,而QMediaPlayer使用gstreamer后端来播放媒体,gstreamer又不能移植到arm(貌似可以,只是很麻烦)。于是换成Qt4,准备使用phonon + mplayer的方案。可是在后来编译好qt4和phonon以及phonon_backend(libphonon_mplayer.so)之后,在程序中并不能调出mplyer来,不知道是什么原因,估计是phonon_backend编译方法不对吧。于是最后决定,还是换回Qt5,使用QProcess直接调MPlayer的方式来实现。

二、QProcess调用MPlayer方法

我们只需要new一个QProcess,然后通过QProcess的start方法启动mplayer线程即可。如下:

	_process = new QProcess();
    QStringList args;
    args << "-slave"; //使用slave模式
    args << "-quiet"; //不要输出冗余信息
    _process->start("mplayer", args); //启动该进程,并传入参数args

这样,便可以启动mplayer。

如果我们要控制mplaer呢,使用QProcess的write方法,往mplayer写入命令即可,比如如下:

process->write("pause\n");

这样便可以对mplayer播放进行控制(播放/暂停)。

如果要读取mplayer发出来的消息呢,使用QProcess的readLine方法,方式如下:

_process->readLine(data,200);

这样便可以读取一行mplayer发送出来的信息,然后我们只需要解析这个data即可。

三、MPlayer命令大全
loadfile name		//加载媒体文件name
volume 100 1		//设置音量,中间位音量的大小0-100
mute 1/0			//静音开关
pause				//播放/暂停
get_time_length		//获取播放文件的长度,以秒为单位
seek value			//定位,valu为秒数
get_percent_pos		//获取播放的百分比
get_time_pos		//获取当前播放的位置,以秒为单位
get_file_name		//获取当前播放的媒体文件名
get_meta_album		//获取专辑
get_meta_artist		//获取艺术家
get_meta_comment	//获取评论
get_meta_genre		//获取流派
get_meta_title		//获取标题
get_meta_year		//获取年份
四、附录–音乐播放类源码
1.mplayercall.h
#ifndef MPLAYERCALL_H
#define MPLAYERCALL_H

#include <QObject>
#include <QProcess>

class MPlayerCall : public QObject
{
   
    Q_OBJECT

public:
    enum MplayerAns //mplayer回复命令
    {
   
        ANS_TIME_POSITION,    	//current time
        ANS_PERCENT_POSITION,	//percent
        ANS_LENGTH,        	 //all time
        ANS_EXIT,
    };
    typedef struct//mplayer回复消息结构
    {
   
        MplayerAns ans;//命令
        int value;	//值
    } MplayerReturn;

    static MPlayerCall& construction(void)
    {
   
        static MPlayerCall obj;
        return obj;
    }
    MPlayerCall();
    virtual ~MPlayerCall();
    void setMusic(const QString name);//设置待播放音乐但不播放
    void setMusicPlay(const QString name);//设置音乐并播放
    void pause(void);//暂停
    void play(void);//播放
    void setVolume(unsigned char volume);//设置音量
    void getTimePos(void);//获取当前播放的时间
    void getTimeLen(void);//获取音乐文件总长
    void seek(
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在Qt实现一个MPlayer音乐播放器,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了MPlayer。你可以在命令行中运行`mplayer`来检查它是否已经安装并可用。 2. 创建一个新的Qt项目,使用Qt Creator或者命令行工具。 3. 在Qt项目中,使用`QProcess`来调用MPlayer命令行工具。`QProcess`允许你在后台运行外部程序并与其通信。 4. 在你的Qt代码中,创建一个`QProcess`对象,并使用`start()`函数来启动MPlayer进程。 ```cpp QProcess* mplayerProcess = new QProcess(this); mplayerProcess->start("mplayer", QStringList() << "your_music_file.mp3"); ``` 这将启动MPlayer进程并播放指定的音乐文件。 5. 如果你需要控制MPlayer播放,你可以使用`write()`函数向MPlayer发送命令。例如,你可以发送"pause"命令来暂停音乐播放。 ```cpp mplayerProcess->write("pause\n"); ``` 这将向MPlayer发送"pause"命令。 6. 你还可以使用`readAllStandardOutput()`函数来读取MPlayer的输出。这对于获取当前播放时间、音量等信息非常有用。 ```cpp QByteArray output = mplayerProcess->readAllStandardOutput(); // 解析output中的信息 ``` 7. 最后,记得在你的Qt应用程序退出时终止MPlayer进程,以确保资源的正确释放。 ```cpp mplayerProcess->terminate(); mplayerProcess->waitForFinished(); ``` 这是一个简单的示例来演示如何在Qt实现一个基本的MPlayer音乐播放器。你可以根据自己的需求进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值