{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/streaming/feed/json/ -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/streaming/", "feed_url": "https://matoken.org/blog/tag/streaming/feed/json/", "language": "ja", "title": "streaming – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "http://matoken.org/blog/?p=2996", "url": "https://matoken.org/blog/2021/02/15/turn-your-android-smartphone-into-a-linux-desktop-speaker-so-you-can-keep-up-with-the-conversation-even-if-you-leave-your-desk-during-a-video-conference/", "title": "Android\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u3092Linux\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306e\u30b9\u30d4\u30fc\u30ab\u30fc\u306b\u3057\u3066\u30d3\u30c7\u30aa\u4f1a\u8b70\u4e2d\u306b\u96e2\u5e2d\u3057\u3066\u3082\u8a71\u306b\u4ed8\u3044\u3066\u3044\u3051\u308b\u3088\u3046\u306b\u3059\u308b", "content_html": "
\u4ee5\u4e0b\u306e\u8a18\u4e8b\u3067\u300cAudioRelay\u300d\u3068\u3044\u3046\u30a2\u30d7\u30ea\u3092\u77e5\u308a\u307e\u3057\u305f\uff0e
\n\u3061\u3087\u3063\u3068\u98f2\u307f\u7269\u3092\u53d6\u3063\u3066\u304f\u308b\u3068\u304b\u3044\u3046\u3068\u304d\u306a\u3069\u306b\u4fbf\u5229\u305d\u3046\uff0e
\n\u3057\u304b\u3057\u3053\u308c\u306fWindows\u304b\u3089Android\u3078\u8ee2\u9001\u3059\u308b\u3082\u306e\u3067\u4ed6\u306e\u74b0\u5883\u3067\u306f\u52d5\u4f5c\u3057\u307e\u305b\u3093\uff0eLinux\u3067\u3082\u52d5\u4f5c\u3059\u308b\u3082\u306e\u3092\u63a2\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
SoundWire\u306fWindow\u82e5\u3057\u304f\u306fLinux x64_64(64bit)/x86(32bit)\uff0cRaspberry Pi OS\u304b\u3089Android\u3078\u30aa\u30fc\u30c7\u30a3\u30aa\u3092\u8ee2\u9001\u3057\u3066\u304f\u308c\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u30d0\u30a4\u30ca\u30ea\u304c\u914d\u5e03\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u5bfe\u5fdc\u3059\u308b\u305d\u308c\u3092\u5165\u624b\u3057\u3066\u5c55\u958b\uff0c\u5b9f\u884c\u3057\u3066Android\u30a2\u30d7\u30ea\u304b\u3089\u63a5\u7d9a\u3059\u308c\u3070\u30aa\u30fc\u30c7\u30a3\u30aa\u304c\u8ee2\u9001\u3055\u308c\u307e\u3059\uff0e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30d5\u30a1\u30a4\u30eb\u3084\u30a2\u30a4\u30b3\u30f3\u3082\u540c\u68b1\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u767b\u9332\u3059\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e
\n$ tar tvf SoundWire_Server_linux64.tar.gz (1)\ndrwxrwxrwx Georgie/None 0 2020-01-26 21:22 SoundWireServer/\n-rwxrwxrwx Georgie/None 2913 2020-01-16 09:00 SoundWireServer/INSTALL.txt\n-rwxrwxrwx Georgie/None 1393 2020-01-16 08:46 SoundWireServer/license.txt\n-rwxrwxrwx Georgie/None 2235 2014-09-16 09:08 SoundWireServer/opus_license.txt\n-rwxrwxrwx Georgie/None 1583 2014-09-16 09:09 SoundWireServer/readerwriterqueue_license.txt\n-rwxrwxrwx Georgie/None 6915 2020-01-26 21:22 SoundWireServer/README.txt\n-rwxrwxrwx Georgie/None 448 2019-12-31 11:00 SoundWireServer/SoundWire-Server.desktop\n-rwxrwxrwx Georgie/None 1611672 2020-01-16 11:55 SoundWireServer/SoundWireServer\n-rwxrwxrwx Georgie/None 237351 2012-11-22 17:28 SoundWireServer/sw-icon.xpm\n$ tar xf SoundWire_Server_linux64.tar.gz (2)\n$ clamscan SoundWireServer/SoundWireServer (3)\n$ ha512sum SoundWireServer/SoundWireServer\na0c1da0afad9e94aef82e19b2555ccf33494ec56fdbd6193a838beae31cec58ca75cae1949f520db84c6793bab13c9c3283b519416bebb1c54bbd66b5c489676 SoundWireServer/SoundWireServer\n$ SoundWireServer/SoundWireServer (4)\n\u30bd\u30fc\u30b9\u306f\u516c\u958b\u3055\u308c\u3066\u3044\u306a\u3044\u3088\u3046\u3067\u3059\uff0e
\n\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\uff0cUDP:59010, 59011 \u3092\u958b\u653e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e(\u8d77\u52d5\u30aa\u30d7\u30b7\u30e7\u30f3\u3084\u74b0\u5883\u5909\u6570\u3067\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u53ef\u80fd)
\n\u305d\u306e\u4ed6\uff0c -nogui \u30aa\u30d7\u30b7\u30e7\u30f3\u3067X\u7121\u3057\u3067\u3082\u52d5\u4f5c\u3057\u307e\u3059\uff0e
\u300cWifiAudio\u300d\u306fWindows\u82e5\u3057\u304f\u306fLinux x86_64(64bit)\u304b\u3089Android\u3078\u30aa\u30fc\u30c7\u30a3\u30aa\u3092\u8ee2\u9001\u3057\u3066\u304f\u308c\u308b\u3088\u3046\u3067\u3059\uff0e
\nPC\u5074\u306f\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u3067\u30d0\u30a4\u30ca\u30ea\u304c\u914d\u5e03\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0c\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u306b\u306f\u30d5\u30a9\u30fc\u30e9\u30e0\u306b\u767b\u9332\u304c\u5fc5\u8981\u306e\u3088\u3046\u3067\u3059\uff0e\u767b\u9332\u306b\u306f\u6c0f\u540d\uff0c\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff0c\u751f\u5e74\u6708\u65e5\u306a\u3069\u3092\u6c42\u3081\u3089\u308c\u307e\u3059\uff0e
\n$ clamscan ./wifiaudio_linux (1)\n$ sha512sum ./wifiaudio_linux\n6c78f47066ad550b988468c74e9bd56e099393a61a11ffffeda31fc181c60cbd5209763e80da9000d6453fef5cc829b9329b26d46993cc3f00c0bb76ffc81864 ./wifiaudio_linux\n$ chmod u+x ./wifiaudio_linux (2)\n$ ./wifiaudio_linux (3)\n$ lsof -i | grep wifiaudio\nwifiaudio 1818239 matoken 12u IPv4 15191466 0t0 UDP *:32000\n\u5229\u7528\u30dd\u30fc\u30c8\u3092\u78ba\u8a8d\u3059\u308b\u3068 UDP:32000 \u306e\u3088\u3046\u306a\u306e\u3067\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u958b\u653e\u3057\u3066\u304a\u304d\u307e\u3059\uff0e
\n\u30af\u30ed\u30fc\u30ba\u30c9\u30bd\u30fc\u30b9\u306e\u3082\u306e\u3057\u304b\u898b\u5f53\u305f\u3089\u306a\u3044\u306a\u3068\u3044\u3046\u3053\u3068\u3067\u4f8b\u306b\u3088\u3063\u3066ffmpeg\u3067\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e
\n\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u97f3\u58f0\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3066mp3\u5f62\u5f0f\u3067\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306eip\u30a2\u30c9\u30ec\u30b9\u306b\u914d\u4fe1\u3057\u307e\u3059\uff0e
$ pactl list short sources (1)\n0 alsa_output.pci-0000_00_1b.0.analog-stereo.monitor module-alsa-card.c s16le 2ch 44100Hz RUNNING\n1 alsa_input.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 48000Hz RUNNING\n2 alsa_input.pci-0000_00_1b.0.analog-stereo.echo-cancel module-echo-cancel.c float32le 1ch 32000Hz RUNNING\n3 alsa_output.pci-0000_00_1b.0.analog-stereo.echo-cancel.monitor module-echo-cancel.c float32le 1ch 32000Hz RUNNING\n4 alsa_input.hw_Loopback_1_0 module-alsa-source.c s16le 1ch 16000Hz RUNNING\n$ ffmpeg -f pulse -i alsa_output.pci-0000_00_1b.0.analog-stereo.monitor -ac 2 -acodec libmp3lame -f rtp rtp://10.42.0.90:1234/ (2)\n\u3053\u306e\u72b6\u614b\u3067VLC\u7b49\u3067 rtp://@:1234 \u3092\u518d\u751f\u3059\u308b\u3068LinuxDesktop\u306e\u97f3\u304c\u6d41\u308c\u3066\u304d\u307e\u3059\uff0e
ffmpeg\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3053\u306e\u3042\u305f\u308a\u3092\uff0e
\nAndroid\u3067mDNS\u304c\u4f7f\u3048\u308c\u3070\u3044\u3044\u306e\u3067\u3059\u304c\uff0c\u4f7f\u3048\u306a\u3055\u305d\u3046\u306a\u306e\u3067IP\u30a2\u30c9\u30ec\u30b9\u3092\u78ba\u8a8d\u3059\u308b\u306e\u304c\u3061\u3087\u3063\u3068\u3081\u3093\u3069\u3046\u3067\u3059\u306d\uff0e\u56fa\u5b9aIP\u306b\u3057\u305f\u308a\u30de\u30eb\u30c1\u30ad\u30e3\u30b9\u30c8\u914d\u4fe1\u3057\u3066\u3057\u307e\u3063\u3066\u3082\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e
\n\u3068\u308a\u3042\u3048\u305a\u306farp\u3067\u3054\u307e\u304b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n#!/bin/bash\n\nMONITOR=`pactl list short sources | grep analog-stereo.monitor | cut -f2 -d' '`\nPHONE_MAC=18:d6:1c:00:00:00\nPHONE_IP=`arp -i wlp3s0 | grep ${PHONE_MAC} | cut -f1 -d' '`\nPORT=1234\n\nffmpeg -f pulse -i ${MONITOR} -acodec libmp3lame -ar 22050 -f rtp rtp://${PHONE_IP}:${PORT}/\nWi-Fi\u306e\u5c4a\u304f\u81ea\u5b85\u5185\u3067\u3042\u308c\u3070\u3053\u308c\u307e\u3067\u306e\u3082\u306e\u3067\u3044\u3044\u3067\u3059\u304c\uff0c\u9577\u4e01\u5834\u3067\u3054\u98ef\u8cb7\u3044\u306b\u30b3\u30f3\u30d3\u30cb\u307e\u3067\u884c\u3063\u3066\u3053\u3088\u3046\u3068\u3044\u3046\u3088\u3046\u306a\u6642\u306b\u306f\u4f7f\u3048\u307e\u305b\u3093\uff0e
\n\u5916\u306e\u30b5\u30fc\u30d0\u30fc\u306b\u6295\u3052\u3066\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3057\u3066\u307f\u307e\u3059\uff0e\u4eca\u56de\u306ficecast2\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3059\uff0e
\n$ 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@example.com:8000/stream\nAndroid\u3067icecast2\u306eurl\u3092\u958b\u304f\u3068Linux\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306e\u97f3\u304c\u805e\u3053\u3048\u3066\u304d\u307e\u3059 :)
\nffmpeg\u306e\u90e8\u5206\u3092OBS Studio\u306b\u3059\u308b\u3068GUI\u306a\u306e\u3067\u3068\u3063\u3064\u304d\u3084\u3059\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u306d\uff0e
\u5e2f\u57df\u304c\u6c17\u306b\u306a\u308b\u5834\u5408\u306f\u30d3\u30c3\u30c8\u30ec\u30fc\u30c8\u3092\u843d\u3068\u3059\u3068\u3044\u3044\u3068\u601d\u3044\u307e\u3059\uff0e\u3053\u306e\u307e\u307e\u3060\u3068128kbps\u7a0b\u3067\u3059\u304c\uff0c -ar 22050 \u3068\u3057\u3066 64kbps\uff0c -ar 11025 \u3092\u3064\u3051\u308b\u306832kbps\u306b\u306a\u308a\u307e\u3059\uff0e
\n32kbps\u306f\u3061\u3087\u3063\u3068\u97f3\u304c\u60aa\u3044\u611f\u3058\u306a\u306e\u3067\uff0c64kbps\u4ee5\u4e0a\u306f\u6b32\u3057\u3044\u304b\u306a?
icecast2\u306a\u3069\u306f\u3053\u306e\u3042\u305f\u308a\u3067\u3082
\n\u3061\u306a\u307f\u306b\uff0cVPS\u306a\u3069\u306e\u30b5\u30a6\u30f3\u30c9\u30ab\u30fc\u30c9\u306e\u306a\u3044\u8a08\u7b97\u6a5f\u306e\u5834\u5408\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30c0\u30df\u30fc\u30c7\u30d0\u30a4\u30b9\u3092\u8aad\u307f\u8fbc\u3080\u3053\u3068\u3067\u540c\u3058\u3053\u3068\u304c\u51fa\u6765\u3066\u4fbf\u5229\u3067\u3059\uff0e
\n\u5e2f\u57df\u304c\u7d30\u304b\u3063\u305f\u308aPC\u306e\u30b9\u30da\u30c3\u30af\u304c\u8db3\u308a\u306a\u3044\u3051\u3069\u97f3\u58f0\u3060\u3051\u3067\u3082\u805e\u304d\u305f\u3044\u3068\u3044\u3063\u305f\u3068\u304d\u306a\u3069\u306b\u4f7f\u3048\u307e\u3059\uff0e
$ sudo modprobe -v snd-dummy\ninsmod /lib/modules/4.19.0-14-amd64/kernel/sound/drivers/snd-dummy.ko\nSoundWire\u3068WifiAudio\u3067\u306fLinux\u3067\u306fSoundWire\u306e\u65b9\u304c\u3044\u3044\u304b\u306a\u3068\u3044\u3046\u611f\u3058\u3067\u3059\uff0e\u3057\u304b\u3057ffmpeg+VLC\u3067\u3044\u3044\u306e\u3067\u306f\u3068\u3044\u3046\u611f\u3058\u3082\uff0e
\nPC\u5074\u306e\u64cd\u4f5c\u3067\u3059\u304c\uff0c\u30dc\u30ea\u30e5\u30fc\u30e0\u306f\u53cd\u6620\u3055\u308c\u305a\u97f3\u91cf0\u3067\u3082\u914d\u4fe1\u3055\u308c\u307e\u3059\u304c\uff0c\u30df\u30e5\u30fc\u30c8\u3059\u308b\u3068\u805e\u3053\u3048\u306a\u304f\u306a\u308b\u306e\u3067\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\uff0e
\n\u518d\u751f\u30c7\u30d0\u30a4\u30b9\u306b\u8ff7\u3063\u305f\u5834\u5408\u306f pavucontrol \u306a\u3069\u3067 Recordicg \u30bf\u30d6\u3067\u30d7\u30eb\u30c0\u30a6\u30f3\u30e1\u30cb\u30e5\u30fc\u304b\u3089\u30c7\u30d0\u30a4\u30b9\u3092\u9806\u756a\u306b\u8a66\u3057\u3066\u3044\u304f\u3068\u3044\u3044\u3068\u601d\u3044\u307e\u3059\uff0e\u97f3\u306f\u51fa\u308b\u3051\u3069\u30ce\u30a4\u30ba\u304c\u591a\u3044\u5834\u5408\u306f\u30b9\u30d4\u30fc\u30ab\u30fc\u304b\u3089\u306e\u97f3\u3092\u62fe\u3063\u3066\u3044\u308b\u30de\u30a4\u30af\u30c7\u30d0\u30a4\u30b9\u3092\u9078\u3093\u3067\u8981\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\uff0e
\u305d\u3057\u3066\u73fe\u5728\u81ea\u5b85\u306eWi-Fi\u306f\u53bb\u5e74\u306e\u53f0\u98a8\u6642\u306b\u58ca\u308c\u3066NotePC\u3092AP\u306b\u3057\u3066\u3044\u3066\u90e8\u5c4b\u3092\u51fa\u308b\u3068\u96fb\u6ce2\u304c\u5c4a\u304b\u305a\u5b9f\u969b\u306f\u5bb6\u306e\u4e2d\u3067\u306f\u3069\u308c\u3082\u4f7f\u3048\u306a\u3044\u3068\u3044\u3046\u554f\u984c\u304c\uff0e\u5bb6\u3092\u51fa\u3066\u5c11\u3057\u884c\u304f\u3068mobile\u56de\u7dda\u4f7f\u3048\u308b\u3093\u3067\u3059\u3051\u3069\u306d\u2026\u2026\uff0e
\n$ SoundWireServer/SoundWireServer -nogui\n :\nSoundWire Server v3.0\n :\n\n$ dpkg-query -W ffmpeg lsof\nffmpeg 7:4.3.1-8\nlsof 4.93.2+dfsg-1.1\n$ lsb_release -dr\nDescription: Debian GNU/Linux bullseye/sid\nRelease: unstable\n$ uname -m\nx86_64\n