通過 ssh 重定向聲音(麥克風),如何通過 ssh 打電話?
如何重定向一台電腦的麥克風以通過 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
就我而言,我看到
card0
和card2
(我的網路攝像頭有一個麥克風)。所以我plughw:2
為card2
.更新 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 -