2010-10-10 33 views
6

पर कीबोर्ड इनपुट भेजें मैं एमपी 3 प्लेयर (mpg123 linux) के लिए वेब इंटरफ़ेस विकसित कर रहा हूं। Mpg123 एक कमांड लाइन एमपी 3 प्लेयर है और कीबोर्ड इनपुट का उपयोग करके नियंत्रित किया जा सकता है। उदाहरण के लिए:एक चल रही प्रक्रिया linux

$ mpg123 -C filename.mp3 

यह गीत चलाने और नियंत्रण के लिए कीबोर्ड इनपुट मॉनिटर करना शुरू कर देगा। 'द' दबाकर छोड़ने के लिए गीत 'क्यू' को रोक दिया जाएगा।

मैं एक पर्ल स्क्रिप्ट का उपयोग कर एक mpg123 प्रक्रिया को उत्पन्न कर रहा हूं। उस स्क्रिप्ट से मैं इस प्रक्रिया में इनपुट भेजना चाहता हूं। मेरे पास प्रक्रिया का ढक्कन है, मुझे नियंत्रण प्रक्रिया के लिए इस प्रक्रिया में कीस्ट्रोक भेजने की जरूरत है।

उत्तर

6

आपको बस अपने एमपी 3 प्लेयर को पार्ल से पाइप के रूप में उभारा है। इसलिए जैसा:

$| = 1; # Set unbuffered output. 
open(my $mp3player, "| mpg123") or die "cannot start mp3 player: $!"; 
print $mp3player "s"; 
... 
print $mp3player "q"; 
close $mp3player 

कई स्क्रिप्ट आमंत्रण के लिए दूसरा कोशिश: एक इंटरैक्टिव खोल में प्रवेश tty। इससे आपको छद्म-टर्मिनल नाम मिलेगा। अब इस शेल में अपने खिलाड़ी को शुरू करें। एक और खोल में, उस छद्म टर्मिनल को लिखें। जैसे echo "s" > /dev/pts/11। खिलाड़ी इसे इनपुट के रूप में प्राप्त करेगा। यदि यह काम करता है, तो छद्म-टर्मिनल पर लिखने के लिए प्रतिध्वनि के बजाय अपनी perl स्क्रिप्ट का उपयोग करें।

+0

धन्यवाद पीटर, मुझे इस समाधान के साथ कुछ समस्याएं हैं। इस विधि का उपयोग करके, मैं mpg123 पर एक गैर-अवरुद्ध कॉल करने में सक्षम नहीं हूं। मुझे एमपी 3 प्लेयर शुरू करने की ज़रूरत है और मेरी लिपि से बाहर निकलना चाहिए। जब स्क्रिप्ट को फिर से बुलाया जाता है (अन्य पैरामीटर जैसे "स्टॉप" के साथ)। इसे चलने की प्रक्रिया में स्टॉप सिग्नल भेजना चाहिए। –

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