是否有使用PId停止和暂停mplayer的命令?

时间:2011-03-02 06:02:36

标签: qt4 mplayer

我正在使用播放按钮从我的qt应用程序中播放mplayer。我有两个叫做暂停和停止的按钮。对于播放按钮,我使用了system ("mplayer "+s.toAscii()+"&");,其中s是播放列表。

对于暂停按钮,我使用system("p");但它无效。我可以使用system("ps -A |grep mplayer > PID.txt");将mplayer的进程ID存储到文本文件中。

是否有任何命令可以使用PId停止和暂停mplayer?

4 个答案:

答案 0 :(得分:7)

您可能想要的是MPlayer的从模式输入,这使得从其他程序轻松提供命令。您可以通过在启动时为其提供-slave命令行选项来启动MPlayer。

在此模式下,MPlayer忽略其标准输入绑定,而是接受不同的文本命令词汇表,这些命令可以一次一个地用换行符分隔。有关支持的完整命令列表,请运行mplayer -input cmdlist

由于您已将问题标记为Qt,因此我假设您使用的是C ++。这是C中的一个示例程序,演示了如何使用MPlayer的从属模式:

#include <stdio.h>
#include <unistd.h>

int main()
{
    FILE* pipe;
    int i;

    /* Open mplayer as a child process, granting us write access to its input */
    pipe = popen("mplayer -slave 'your_audio_file_here.mp3'", "w");

    /* Play around a little */
    for (i = 0; i < 6; i++)
    {
        sleep(1);
        fputs("pause\n", pipe);
        fflush(pipe);
    }

    /* Let mplayer finish, then close the pipe */
    pclose(pipe);
    return 0;
}

答案 1 :(得分:0)

据我所知,没有PID。检查奴隶模式(-slave)虽然。来自man mplayer:

打开从属模式,其中MPlayer作为其他程序的后端。 MPlayer不会拦截键盘事件,而是从stdin读取由换行符(\ n)分隔的命令。

你可以这样完美地控制它。

答案 2 :(得分:0)

是在奴隶模式下使用mplayer。这样您就可以从程序中将命令传递给它。看看qmpwidget。它的开源,应该解决你所有的麻烦。对于命令,请检查mplayer站点或搜索mplayer slave模式命令。

答案 3 :(得分:0)

我在QT中编写了一个使用mplayer的类似程序。我使用QProcess来控制mplayer。

以下是代码的某些部分。在函数playstop()中,你只需发送“q”,它就存在于mplayer中。如果你发送“p”它将暂停mplayer.I希望它对你有用。

Main.h

#ifndef MAIN_H
#define MAIN_H
#include "process.h"
class Main : public QMainWindow
{
public:  
   Process  m_pProcess1; 
Q_OBJECT
public:
  Main():QMainWindow(),m_pProcess1()
{
};

 ~Main()
      {};


public slots:

void play()

{
m_pProcess1.setProcessChannelMode(QProcess::MergedChannels); 
        m_pProcess1.start("mplayer -geometry 0:0 -vf scale=256:204 -noborder -af scaletempo /root/Desktop/spiderman.flv");

};

void playstop()

{
m_pProcess1.setProcessChannelMode(QProcess::MergedChannels); 
        m_pProcess1.writeData("q",1);


};

};

#endif