ssh üzerinden ses (mikrofon) yönlendirilir, ssh ile telefon nasıl kurulur?


47

Bir bilgisayarın mikrofonunu ssh ile başka bir bilgisayarda dinlemek için nasıl yeniden yönlendirebilirim? Doğru cihaz hangisi veya doğru komut satırı hangisi?

Birkaç yıl önce, uzak bir mikrofondan yerel bir bilgisayara ya da tam tersine sesi yeniden yönlendirmek kolay ve eğlenceliydi - kolay bir telefon oldu. Orada bazı talimatlar bunun için, ancak bunların hiçbiri yeni bilgisayarlarda / Linux dağıtımlarının üzerinde çalışmaya görünüyor. /dev/audioBilgisayarımda bile bir şey yok (Fedora 17).

Darbeli sesle ilgisi olabileceğini düşünüyorum. Yoksa bu basit telefon için darbeli sese ihtiyacım yok mu? Doğru cihaz hangisi?

Başlattığımda tüm ses aygıtlarımı görebiliyorum alsamixerve F6 tuşuna basıyorum. Ama ağacımda hangi cihazların olduğunu bilmiyorum /dev.

Yanıtlar:


53

Tamam, daha yeni buldum ve hala çalışıyor! Gerçekten komik. Fantezi uygulamalara, anlık mesajlaşma programlarına veya benzerlerine ihtiyacınız yoktur. Bu komutla sesinizi uzaktaki ana bilgisayara gönderirsiniz .

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

Veya ffmpeg'i daha iyi seviyorsanız

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

Kaynak: http://shmerl.blogspot.de/2011/06/some-fun-with-audio-forwarding.html


Gerçek bir telefon istiyorsanız:

Yukarıdaki komut sadece bir yön içindi. Diğer yön için başka bir ssh oturumu başlatmanız gerekir. Yani, diğer kullanıcının size söylediklerini almak için,

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

Veya ffmpeg'i daha iyi seviyorsanız

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

hw:3kaydetmek istediğiniz alsadevice nerede (onu bulun arecord -l; bir cihaz adı da kullanabilirsiniz, bunu bulun arecord -L; çoğu durumda yalnızca aşağıdaki komutla listelenen cihazı kullanabilirsiniz :) arecord -L | grep sysdefault.

Güncelleme

2018’de Fedora Linux sistemlerinde ffmpegalsa desteği bulunmuyor (Raspbian ile RaspberryPi sistemlerinde aynı görünüyor). Ancak yeniden derlemeden basit bir çözüm var . Sadece arecord (alsarecorder) çıkışını ffmpeg'e aktarın:

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

Giriş plughw:2komutunu, cihazınızı aşağıdaki komutun çıktısında bularak alırsınız :

arecord -l

Benim durumumda görüyorum card0ve card2(mikrofonu olan web kameram). Bu yüzden yazdım plughw:2için card2.

Güncelleme 2 (mplayer olmadan)

Eğer ya da benzeri yoksa mplayerama ffplay(ki bir parçasıdır ffmpeg) kullanabilirsiniz:

  • sıkıştırılmamış dalga sesi (yüksek bant genişliği, kayıt tarafında çok düşük işlemci kullanımı)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
    
  • flac ile sıkıştırılmış (düşük bant genişliği, kayıt tarafında düşük işlemci kullanımı)

    ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
    
  • ogg ile sıkıştırılmış (çok düşük bant genişliği, kayıt tarafında yüksek işlemci kullanımı)

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

1
cat - | mplayer -Sadece yapmak yerine bazı sebeplerin var mı mplayer -?
Chris Down,

Sebebi şudur: Komutu sadece belirtilen kaynaktan kopyaladım. Gereksiz olabilir. Ben sildim, hala çalışıyor gibi görünüyor. Belki de ihtiyaç duyulduğu bir durum söz konusudur ve yazar görevinde olduğunu söylemeden bunu biliyordu?
erik

3

Erik'in cevabı iyi çalışıyor, ama nasıl kullanılacağını, flacveya kullanarak oggenc, önemli bir gecikme var.
Bir çözüm eklemektir -cache 256için mplayergörüneceğini böylece aşağıdaki gibi komutu:

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

Bahsedilecek başka bir şey, günümüzde hemen hemen her modern dağıtımın donanım aygıtı üzerinde kontrol sahibi olan plughw:2PulseAudio'yu kullanmasıdır, bu nedenle PulseAudio çalışıyorsa kullanım başarısız olur.
Genel olarak defaultiyi çalışmalı ve PulseAudio'yu pavucontrolkullanarak istediğiniz giriş kaynağını seçmek için kullanabileceğiniz veya benzerini kullanabileceğiniz PulseAudio'yu kullanmalısınız .

Bu komutu aşağıdaki gibi yapar:

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

AMA: Bu bir gecikme getiriyor. Benim durumumda, yaklaşık sekiz saniye. Bu korkunç.


Çözüm, diğer komutlardan çok daha basittir:

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

Bu kadar. Bu hemen hemen hiç CPU kullanıyor (buna göre% 0.1 htop). Benim için ~ 60KB / sn bant genişliği kullanıyor.

Stereo ses istiyorsanız: ssh <user>@<host> "arecord -f cd" | aplay
Yalnızca bir stereo mikrofonunuz varsa kullanışlıdır, bant genişliğini benim için ~ 150KB / s'ye yükseltir. (Ayrıca örnekleme oranını 44100Hz'e yükseltir).

Örnekleme hızı (hakkında daha fazla bilgi -r) ve (etkilenen bit hızı -f) bulunabilir burada .
Temel olarak: Ne kadar düşük giderseniz, kalite o kadar kötü, ancak gereken bant genişliği o kadar düşük olur.

Bu çözüm PulseAudio ile tamamen uyumludur, pactlveya pavucontrolGUI uygulamasını kullanarak çıkış cihazı, ses seviyesi ve daha fazlasını kontrol edebilirsiniz :

pavucontrol

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.