2011-03-02 11 views
5

Yürütme düğmesini kullanarak qt uygulamasından mplayer oynuyorum. Duraklatma ve durdurma denilen iki düğmem var. Oynat düğmesi için kullanıyorum, burada s çalma listesidir.Mplayer'ı PId kullanarak durdurup duraklatmak için bir komut var mı?

Duraklatma düğmesi için system("p"); kullanılır, ancak çalışmıyor. Mplayer işlem kimliğini system("ps -A |grep mplayer > PID.txt"); kullanarak bir metin dosyasına saklayabiliyorum.

PId'yi kullanarak mplayer'ı durdurmak ve duraklatmak için herhangi bir komut var mı?

cevap

0

Bildiğim kadarıyla bir PID ile değil. Ancak köle modunu (-slave) kontrol edin. Man mplayer:

MPlayer'ın diğer programlar için arka uç olarak çalıştığı bağımlı modunu açar. Klavye olaylarını engellemek yerine, MPlayer, stdin'den yeni satır (\ n) ile ayrılmış komutları okuyacaktır.

Bu şekilde mükemmel şekilde kontrol edebilirsiniz.

6

Muhtemelen istediğiniz başka bir programdan komutları vermeyi kolaylaştıran MPlayer'ın bağımlı modu girişidir. Bu modda, başlatırken -slave komut satırı seçeneğini vererek MPlayer'ı başlatabilirsiniz.

Bu modda, MPlayer standart giriş bağlamaları yok sayar ve bunun yerine yeni satırlarla ayrılan bir kerede gönderilebilen farklı bir metin komutları sözlüğünü kabul eder. Desteklenen komutların tam listesi için mplayer -input cmdlist'u çalıştırın.

Sorunu Qt olarak etiketlediğiniz için, C++ kullandığınızı varsayacağım. köle modunda

#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; 
} 
0

Evet kullanım mplayer'la: İşte MPlayer köle modunu nasıl kullanılacağını gösteren C örnek program. Bu sayede programınızdan komutları iletebilirsiniz. Qmpwidget'e bir göz atın. Açık kaynağı ve tüm sıkıntılarınızı çözmelisiniz. Komutlar için mplayer sitesini kontrol edin veya mplayer slave mode komutlarını arayın.

0

mplayer kullanan QT'de benzer bir program yazdım. Mplayer'ı kontrol etmek için QProcess'i kullandım.

İşte kodun bir kısmı. Playstop() işlevinde sadece "q" gönderirsiniz ve mplayer var. Eğer "p" gönderirseniz, mplayer'ı duraklatacaktır. Umarım sizin için yararlı olur.

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 
İlgili konular