2011-03-02 14 views
5

मैं प्ले बटन का उपयोग कर अपने क्यूटी एप्लिकेशन से mplayer खेल रहा हूँ। मेरे पास दो बटन हैं जिन्हें रोकें और रोकें। प्ले बटन के लिए मैंने system ("mplayer "+s.toAscii()+"&"); का उपयोग किया जहां s प्लेलिस्ट है।क्या पीआईडी ​​का उपयोग करके mplayer को रोकने और रोकने के लिए कोई आदेश है?

विराम बटन के लिए मैंने system("p"); का उपयोग किया लेकिन यह काम नहीं कर रहा है। मैं system("ps -A |grep mplayer > PID.txt"); का उपयोग कर mplayer की प्रक्रिया आईडी को टेक्स्ट फ़ाइल में संग्रहीत करने में सक्षम हूं।

क्या पीआईडी ​​का उपयोग करके mplayer को रोकने और रोकने के लिए कोई आदेश है?

उत्तर

0

जहां तक ​​मुझे पता है पीआईडी ​​के साथ नहीं। यद्यपि दास मोड (-स्लेव) देखें। मैन mplayer से:

दास मोड पर स्विच, जिसमें एमपीएलर अन्य कार्यक्रमों के लिए बैकएंड के रूप में काम करता है। कुंजीपटल घटनाओं को अवरुद्ध करने के बजाय, एमपीएलर stdin से एक नई लाइन (\ n) से अलग आदेशों को पढ़ेगा।

आप इसे इस तरह से पूरी तरह से नियंत्रित कर सकते हैं।

6

आप जो चाहते हैं वह एमपीएलएयर दास मोड इनपुट का है, जो इसे किसी अन्य प्रोग्राम से आदेश देना आसान बनाता है। आप इसे लॉन्च करते समय इसे -slave कमांड लाइन विकल्प देकर एमपीएलर को इस मोड में लॉन्च कर सकते हैं।

इस मोड में, एमपीलेयर अपने मानक इनपुट बाइंडिंग को अनदेखा करता है और इसके बजाय टेक्स्ट कमांड की एक अलग शब्दावली स्वीकार करता है जिसे एक बार न्यूलाइन द्वारा अलग किया जा सकता है। समर्थित आदेशों की पूरी सूची के लिए, mplayer -input cmdlist चलाएं।

चूंकि आपने प्रश्न को क्यूटी के रूप में टैग किया है, इसलिए मुझे लगता है कि आप सी ++ का उपयोग कर रहे हैं।

#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

गुलाम मोड में हाँ उपयोग MPlayer: यहाँ सी में एक उदाहरण कार्यक्रम कैसे एम प्लेयर के गुलाम मोड का उपयोग करने का प्रदर्शन है। इस तरह आप अपने कार्यक्रम से कमांड पास कर सकते हैं। Qmpwidget पर एक नज़र डालें। इसका खुला स्रोत और आपकी सभी परेशानियों को हल करना चाहिए। कमांड के लिए mplayer साइट की जांच करें या mplayer गुलाम मोड कमांड के लिए खोजें।

0

मैंने क्यूटी में एक समान कार्यक्रम लिखा है जो mplayer का उपयोग करता है। मैंने mplayer को नियंत्रित करने के लिए QProcess का उपयोग किया।

यहां कोड का कुछ हिस्सा है। फ़ंक्शन प्लेस्टॉप() में आप बस "क्यू" भेजते हैं और यह mplayer मौजूद है। यदि आप "पी" भेजते हैं तो यह mplayer को रोक देगा। मुझे उम्मीद है कि यह आपके लिए उपयोगी होगा।

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 
संबंधित मुद्दे

 संबंधित मुद्दे