Save 37% off PRO during our Black Friday Sale! »

スマートフォンをLinuxデスクトップのスピーカーに(してビデオ会議中に離席しても話に付いていけるようにする)

 スマートフォンをLinuxデスクトップのスピーカーに(してビデオ会議中に離席しても話に付いていけるようにする)

E567a535ddc7964130dd086f147a7682?s=128

Kenichiro MATOHARA

February 21, 2021
Tweet

Transcript

  1. / スマートフォ スマートフォ ンをLinuxデス ンをLinuxデス クトップのス クトップのス ピーカーに(し ピーカーに(し 1

    / 33
  2. / 南隅から参加(鹿児島の右下) 好きなLinuxディストリビューションはDebian お仕事募集 mailto:work@matohara.org Kenichiro Kenichiro Matohara(matoken) Matohara(matoken) https://matoken.org

    https://matoken.org 2 / 33
  3. / 最近の発表 最近の発表 「 2021-01-23 「 」 2021-01-31 「 」

    2021-02-13(sat) Bitbar/SwiftBarをLinuxでも使いたい」 東海道らぐ あひる焼きさんのライトニングトークダービー! ネットワーク経由でUSB共有 鹿児島Linux勉強 会 2021.01(オンライン開催) DroidCamでもスマホをWebCamにする 小江戸 らぐ 2月のオフな集まり(第223回) 3 / 33
  4. / スマートフォンをLinuxデ スマートフォンをLinuxデ スクトップのスピーカー スクトップのスピーカー に に ビデオ会議中に離席しても話に付いていけるように ちょっと飲みのものをとりに ちょっとトイレに

    ちょっとコンビニに 4 / 33
  5. / 近距離 近距離 Bluetooth Headsetでマイクミュート マイクミュートで音量を上げる 5 / 33

  6. / Wi-Fiのある範囲 Wi-Fiのある範囲 Wi-Fi経由でPCの音をスマートフォンに転送 Windows+Android用 Web会議中に席を外す、音声だけでもスマホで聞き たいときに使うアプリ「AudioRelay」 - ケータイ Watch

    Stream your PC audio to your phone - AudioRelay 6 / 33
  7. / Linux + Androidで動作す Linux + Androidで動作す るものを探す るものを探す 「SoundWire」,「WifiAudio」

    AudioRelay Alternatives for Linux | AlternativeTo 7 / 33
  8. / 「SoundWire」 「SoundWire」 SoundWireはWindow若しくはLinux x64_64(64bit)/x86(32bit)/Raspberry Pi OS(armhf)から Androidへオーディオを転送 ※有料版は未検証 (10台まで利用できたり?)

    GeorgieLabs SoundWire (free) - Google Play のアプリ SoundWire - Google Play のアプリ 8 / 33
  9. / バイナリが配布されているので対応するそれを入手 して展開,実行してAndroidアプリから接続すれば オーディオが転送される デスクトップファイルやアイコンも同梱されている ので必要に応じて登録する クローズドソース ファイヤーウォール利用時はUDP:59010を開放(起 動オプションや環境変数でカスタマイズ可能) -nogui

    オプションでX無しでも動作 9 / 33
  10. / 実行例 実行例 $ tar tvf SoundWire_Server_linux64.tar.gz drwxrwxrwx Georgie/None 0

    2020-01-26 21:22 SoundWireServer/ -rwxrwxrwx Georgie/None 2913 2020-01-16 09:00 SoundWireServer/IN -rwxrwxrwx Georgie/None 1393 2020-01-16 08:46 SoundWireServer/l -rwxrwxrwx Georgie/None 2235 2014-09-16 09:08 SoundWireServer/op -rwxrwxrwx Georgie/None 1583 2014-09-16 09:09 SoundWireServer/r -rwxrwxrwx Georgie/None 6915 2020-01-26 21:22 SoundWireServer/R -rwxrwxrwx Georgie/None 448 2019-12-31 11:00 SoundWireServer/S -rwxrwxrwx Georgie/None 1611672 2020-01-16 11:55 SoundWireServer/ -rwxrwxrwx Georgie/None 237351 2012-11-22 17:28 SoundWireServer/ $ tar xf SoundWire_Server_linux64.tar.gz $ clamscan SoundWireServer/SoundWireServer $ ha512sum SoundWireServer/SoundWireServer a0c1da0afad9e94aef82e19b2555ccf33494ec56fdbd6193a838beae31cec58ca $ SoundWireServer/SoundWireServer 1 2 3 4 10 / 33
  11. / 1 アーカイブの確認 2 アーカイブの展開 3 念の為手動でもウィルス確認 4 実行 11

    / 33
  12. / 実行画面(Linux) 実行画面(Linux) 12 / 33

  13. / 実行画面(Android) 実行画面(Android) 13 / 33

  14. / 再生デバイスに迷った場合は pavucontrol など で Recordicg タブでプルダウンメニューからデバ イスを順番に試していくといい 音は出るけどノイズが多い場合はスピーカーから の音を拾っているマイクデバイスを選んでいる

    ※以降のアプリでも同じ 14 / 33
  15. / 「WifiAudio」 「WifiAudio」 「WifiAudio」はWindows若しくはLinux x86_64(64bit) からAndroidへオーディオを転送してくれる PC側バイナリ ※ダウンロードす るにはフォーラムに登録が必要 Home

    | WiFiAudio - Use Android Device as Wireless speaker for Windows/Linux wireless speaker for android - Google Play のアプリ Wifiaudio Support and Links to Download PC application | WiFiAudio - Use Android Device as Wireless speaker for Windows/Linux 15 / 33
  16. / 実行例 実行例 1 念の為手動でもウィルス確認 2 実行権付与 3 実行 $

    clamscan ./wifiaudio_linux $ chmod u+x ./wifiaudio_linux $ ./wifiaudio_linux 1 2 3 16 / 33
  17. / 利用ポート 利用ポート 利用ポートを確認すると UDP:32000 のようなのでフ ァイアウォールを利用している場合は開放する $ lsof -i

    | grep wifiaudio wifiaudio 1818239 matoken 12u IPv4 15191466 0t0 UDP *:32 17 / 33
  18. / 実行画面(PC) 実行画面(PC) 18 / 33

  19. / 実行画面(Android) 実行画面(Android) 19 / 33

  20. / 「ffmpegとVLC」 「ffmpegとVLC」 クローズドソースのものしか見当たらないので例に よってffmpegで試す デスクトップアプリケーションの音声をキャプチャ してmp3形式でスマートフォンのipアドレスに配信 20 / 33

  21. / +--------------+ |Linux Desktop | | Applications | +---+----------+ |

    | PulseAudio | | +---------+ +--------+ +------------+ +---+ monitor +---+ ffmpeg +-------))) Wi-Fi (((---| SmartPhone | + | +---------+ +--------+ mp3 | VLC +---| | +------------+ + | +---------+ +---+ Speaker | +---------+ 21 / 33
  22. / 実行例 実行例 1 PulseAudioのデバイスを確認 2 ffmpegでAndroidのIPに対してmp3形式で配信 この状態でVLC等で rtp://@:1234 を再生すると

    LinuxDesktopの音が流れて来る $ pactl list short sources 0 alsa_output.pci-0000_00_1b.0.analog-stereo.monitor m 1 alsa_input.pci-0000_00_1b.0.analog-stereo module-al 2 alsa_input.pci-0000_00_1b.0.analog-stereo.echo-cancel m 3 alsa_output.pci-0000_00_1b.0.analog-stereo.echo-cancel.mo 4 alsa_input.hw_Loopback_1_0 module-alsa-source.c s $ ffmpeg -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.m -acodec libmp3lame -f rtp rtp://10.42.0.90:1234/ 1 2 22 / 33
  23. / ffmpegのオプションについてはこのあたりを. VLC for Android - Google Play のアプリ Capture/PulseAudio

    – FFmpeg Capture/ALSA – FFmpeg StreamingGuide – FFmpeg 23 / 33
  24. / 24 / 33

  25. / スマートフォンのIPアド スマートフォンのIPアド レス レス mDNSが使えなさそうなので固定IPにしたりマルチ キャスト配信してしまってもいいかも 今回はarpでごまかしてみた #!/bin/bash MONITOR=`pactl

    list short sources | grep analog-stereo.monitor | PHONE_MAC=18:d6:1c:00:00:00 PHONE_IP=`arp -i wlp3s0 | grep ${PHONE_MAC} | cut -f1 -d' '` PORT=1234 ffmpeg -f pulse -i ${MONITOR} -acodec libmp3lame -ar 22050 \ -f rtp rtp://${PHONE_IP}:${PORT}/ 25 / 33
  26. / ちょっとコンビニまで ちょっとコンビニまで Wi-Fiの圏外でmobile回線を利用する SoundWireでもルータのポート開放でできるという 記述があるが面倒 & お手軽なトンネリングサービ スはUDP NGな場合が多い

    Icecast2サーバを利用して配信してみる 各種ライブ配信サービスも利用できるが公開範囲 や内容に注意 Youtube Liveの場合音楽のみはNGで何らかの画像 も一緒に配信する必要がある 26 / 33
  27. / ffmpegとicecast2 ffmpegとicecast2 ffmpegでicecast2サーバにストリーミング 受信端末でURLを開いて再生 回線があれば世界中で受信できる :) ffmpegの部分をOBS StudioにするとGUIなのでと っつきやすいと思う

    27 / 33
  28. / ffmpegでの配信例 ffmpegでの配信例 1 pulseaudioを利用 2 インプットデバイス指定 3 ログレベル,配信形式指定 4

    コンテンツタイプ指定 5 配信ソースURL $ ffmpeg -f pulse \ -i alsa_output.platform-snd_aloop.0.analog-stereo.monitor \ -loglevel 31 -stats -f adts \ -content_type audio/aac \ icecast://$USER:$PASS@icecast.example.com:8000/$MOUNTPOINT 1 2 3 4 5 28 / 33
  29. / 応用?)各種ビデオ会議を 応用?)各種ビデオ会議を 配信 配信 デスクトップキャプチャしつつエンコード&配信す ることでicecast2をはじめ各種サービスで配信可能 ffmpegやOBS Studioでキャプチャ&エンコード Icecast2等でストリーミング

    29 / 33
  30. / VPSで配信 VPSで配信 ローカルの回線やマシンスペックの問題がある場合 VPSからの配信も可能 VPSだとサウンドカードが無いことが多いのでダミ ーデバイスを読み込んで利用する GUI操作はrdp/vnc/x2go等経由 $ sudo

    modprobe -v snd-dummy insmod /lib/modules/4.19.0-14-amd64/kernel/sound/drivers/snd-dumm 30 / 33
  31. / Discordを配信中 :) Discordを配信中 :) 鹿児島からドイツのVPSを操作してDiscordに参加,東 京のVPSに配信,ユーザは東京のVPS経由でPCやスマ ートフォンで受信 :) 31

    / 33
  32. / まとめ まとめ SoundWireとWifiAudioではSoundWireの方がおすす め? しかしわざわざ導入しなくてもffmpeg+VLCでいい のではという感じ PC側では,ボリュームは反映されず音量0でも配信 されるがミュートすると聞こえなくなるので注意 *

    32 / 33
  33. / 奥付 奥付 発表 2021-02-21(sun) 発表者 ライセンス CC BY-NC-SA 4.0

    鹿児島Linux勉強会 2021.02(オンライン開催) Kenichiro Matohara(matoken) 33 / 33