ssh के माध्यम से रीडायरेक्ट साउंड (माइक्रोफोन), ssh के माध्यम से टेलीफोन कैसे करें?


47

मैं एक कंप्यूटर के माइक्रोफ़ोन को ssh के माध्यम से दूसरे कंप्यूटर पर कैसे सुन सकता हूँ? सही डिवाइस कौन सी है या राइट कमांड लाइन कौन सी है?

कुछ साल पहले एक रिमोट माइक्रोफोन से स्थानीय कंप्यूटर या इसके विपरीत ध्वनि को पुनर्निर्देशित करना आसान और मजेदार था - यह एक आसान टेलीफोन था। इसके लिए कुछ निर्देश हैं , लेकिन उनमें से कोई भी नए कंप्यूटर / लिनक्स डिस्ट्रोस पर काम नहीं करता है। मेरे पास /dev/audioअपने कंप्यूटर पर भी नहीं है (फेडोरा 17)।

मुझे लगता है कि यह पल्स ऑडियो के साथ कुछ कर सकता है। या मुझे इस सरल टेलीफोन के लिए पल्स ऑडियो की आवश्यकता नहीं है? सही उपकरण कौन सा है?

जब मैं प्रारंभ करता हूं alsamixerऔर F6 कुंजी दबाता हूं, तो मैं अपने सभी ध्वनि उपकरण देख सकता हूं । लेकिन मुझे नहीं पता कि मेरे /devपेड़ में कौन से उपकरण हैं ।

जवाबों:


53

ठीक है, मैंने अभी पाया है, और यह अभी भी काम करता है! वास्तव में अजीब। आप किसी भी फैंसी अनुप्रयोगों, तत्काल दूत या इस तरह की जरूरत नहीं है। इस कमांड से आप अपने ऑडियो को रिमोट होस्ट को भेजते हैं

arecord -f cd -t raw | oggenc - -r | ssh <user>@<remotehost> mplayer -

या अगर आप ffmpeg को बेहतर पसंद करते हैं

ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
    | ssh <user>@<remotehost> mplayer - -idle -demuxer ogg

स्रोत: http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forward.html


यदि आप एक वास्तविक टेलीफोन चाहते हैं:

ऊपर की कमान केवल एक दिशा के लिए थी। दूसरी दिशा के लिए आपको एक और ssh सत्र शुरू करना होगा। तो, दूसरा उपयोगकर्ता आपसे जो कहता है , उसे प्राप्त करने के लिए उपयोग करें

ssh <user>@<remotehost> 'arecord -f cd -t raw | oggenc - -r' | mplayer -

या अगर आप ffmpeg को बेहतर पसंद करते हैं

ssh <user>@<remotehost> ffmpeg -f alsa -ac 1 -i hw:3 -f ogg - \
    | mplayer - -idle -demuxer ogg

hw:3अलस्देवीस आप कहां रिकॉर्ड करना चाहते हैं (इसके साथ खोजें arecord -l; आप डिवाइस नाम का उपयोग भी कर सकते हैं, इस के साथ खोजें arecord -L; कई मामलों में आप केवल निम्नलिखित कमांड के साथ सूचीबद्ध डिवाइस का उपयोग कर सकते हैं:) arecord -L | grep sysdefault

अपडेट करें

2018 में मेरे फेडोरा लिनक्स सिस्टम ffmpegमें अलसा समर्थन शामिल नहीं है (यह रास्पबेरी के साथ रास्पबेरीपी सिस्टम पर समान लगता है)। लेकिन पुन: जमा किए बिना एक सरल समाधान है। बस ffmpeg के लिए एस्कॉर्ड (अल्सरकॉर्डर) के आउटपुट को पाइप करें :

ssh <user>@<remotehost> 'arecord -f cd -D plughw:2 | ffmpeg -ac 1 -i - -f ogg -' \
    | mplayer - -idle -demuxer ogg

आप plughw:2निम्न कमांड के आउटपुट में अपना डिवाइस ढूंढकर इनपुट डिवाइस प्राप्त करते हैं :

arecord -l

मेरे मामले में मैं देख रहा हूं card0और card2(मेरा वेब कैमरा जिसमें माइक्रोफ़ोन है)। तो मैं ने लिखा है plughw:2के लिए card2

अपडेट 2 (बिना मेपर के)

यदि आपके पास नहीं है या पसंद है, mplayerलेकिन ffplay(जो हिस्सा है ffmpeg) आप उपयोग कर सकते हैं:

  • असम्पीडित तरंग-श्रव्य (उच्च बैंडविड्थ, रिकॉर्डिंग पक्ष पर बहुत कम सीपीयू उपयोग)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
    
  • फ्लैक के साथ संपीड़ित (कम बैंडविड्थ, रिकॉर्डिंग पक्ष पर कम सीपीयू उपयोग)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
    
  • ओग के साथ संकुचित (बहुत कम बैंडविड्थ, रिकॉर्डिंग पक्ष पर उच्च सीपीयू उपयोग)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -
    

1
क्या कुछ कारण है जो आप cat - | mplayer -सिर्फ करने के बजाय कर रहे हैं mplayer -?
क्रिस डाउन

कारण यह है: मैंने अभी उद्धृत स्रोत से कमांड की प्रतिलिपि बनाई है। निरर्थक हो सकता है। मैं इसे हटा दिया है, अभी भी काम करने लगता है। शायद एक किनारे का मामला है जहां इसकी आवश्यकता थी और लेखक को इसके बारे में अपने पोस्ट में बताए बिना पता था?
इरिक

3

एरिक का उत्तर अच्छी तरह से काम करता है, लेकिन इसका उपयोग कैसे करना है, इसका उपयोग करना flacया oggenc, महत्वपूर्ण अंतराल है।
एक समाधान कमांड में जोड़ना -cache 256है mplayer, इसलिए यह निम्नानुसार दिखेगा:

ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | mplayer -cache 256 -

एक और बात का उल्लेख है कि आजकल हर आधुनिक वितरण PulseAudio का उपयोग करता है, जो हार्डवेयर डिवाइस पर नियंत्रण रखता है, इसलिए plughw:2यदि PulseAudio चल रहा है तो इसका उपयोग करना विफल हो जाएगा।
आम तौर पर, defaultठीक काम करना चाहिए और PulseAudio का उपयोग करना चाहिए, जहां आप pavucontrolPulseAudio का उपयोग करके अपने इच्छित इनपुट स्रोत का चयन करने के लिए या समान उपयोग कर सकते हैं ।

जो निम्नानुसार कमांड बनाएगा:

ssh <user>@<remotehost> "arecord -f cd | oggenc -" | mplayer -cache 256 -

लेकिन: यह एक अंतराल का परिचय देता है। मेरे मामले में, यह आठ सेकंड के आसपास है। वह भयानक है।


समाधान किसी भी अन्य आदेश की तुलना में बहुत सरल है:

ssh <user>@<host> "arecord -f S16_LE -r 36000" | aplay

बस। यह बमुश्किल किसी सीपीयू (0.1% के अनुसार htop) का उपयोग कर रहा है। यह मेरे लिए ~ 60KB / s बैंडविड्थ का उपयोग कर रहा है।

यदि आप स्टीरियो साउंड चाहते हैं: ssh <user>@<host> "arecord -f cd" | aplay
स्टीरियो माइक्रोफोन होने पर ही उपयोगी है, मेरे लिए बैंडविड्थ को ~ 150KB / s तक बढ़ा देता है। (चूंकि यह नमूना दर को बढ़ाकर 44100 हर्ट्ज तक ले जाता है)।

नमूना दर ( -r) और बिट दर (इससे प्रभावित) के बारे में अधिक जानकारी यहां-f पाई जा सकती है
मूल रूप से: जितना कम आप जाएंगे, गुणवत्ता उतनी ही खराब होगी लेकिन बैंडविड्थ की जरूरत कम होगी।

यह समाधान PulseAudio के साथ पूरी तरह से संगत है, आप आउटपुट डिवाइस, वॉल्यूम और अधिक उपयोग pactlया pavucontrolGUI एप्लिकेशन को नियंत्रित कर सकते हैं :

pavucontrol

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.