Ssh

通過 ssh 重定向聲音(麥克風),如何通過 ssh 打電話?

  • November 15, 2018

如何重定向一台電腦的麥克風以通過 ssh 在另一台電腦上收聽?哪個是正確的設備或哪個是正確的命令行?

幾年前,將聲音從遠端麥克風重定向到本地電腦(反之亦然)既簡單又有趣——這是一部簡單的電話。有一些 說明,但它們似乎都不適用於較新的電腦/Linux 發行版。我什至沒有/dev/audio電腦(Fedora 17)。

我認為這可能與脈衝音頻有關。或者我不需要這個簡單的電話的脈衝音頻嗎?哪個是正確的設備?

當我啟動alsamixer並按 F6 鍵時,我可以看到我所有的聲音設備。但我不知道我的/dev樹中有哪些設備。

好的,我剛剛找到它,它仍然有效!真搞笑。您不需要任何花哨的應用程序、即時通訊工具等。使用此命令,您可以將音頻發送到遠端主機。

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-forwarding.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您要記錄的 alsadevice在哪裡(使用 查找它arecord -l;您也可以使用設備名稱,使用 查找它arecord -L;在許多情況下,您可以使用以下命令列出的設備:) arecord -L | grep sysdefault

更新

在 2018 年,我的 Fedora Linux 系統ffmpeg不包含 alsa 支持(在帶有 Raspbian 的 RaspberryPi 系統上似乎是一樣的)。但是有一個簡單的**解決方案,無需重新編譯。**只需將arecord(alsarecorder)的輸出通過管道傳輸到 ffmpeg:

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

plughw:2您可以通過在以下命令的輸出中找到您的設備來獲取輸入設備:

arecord -l

就我而言,我看到card0card2(我的網路攝像頭有一個麥克風)。所以我plughw:2card2.

更新 2(沒有 mplayer)

如果您沒有或不喜歡mplayer但是ffplay(這是 的一部分ffmpeg),您可以使用:

  • 未壓縮的波形音頻(高頻寬,錄製端的 CPU 使用率非常低)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2" | ffplay -nodisp -
  • 用 flac 壓縮(低頻寬,錄製端 CPU 使用率低)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | flac - -o -" | ffplay -nodisp -
  • 使用 ogg 壓縮(非常低的頻寬,錄製端的 CPU 使用率很高)
ssh <user>@<remotehost> "arecord -f cd -D plughw:2 | oggenc -" | ffplay -nodisp -

引用自:https://unix.stackexchange.com/questions/116919