在Linux中将手机用作麦克风


12

我双重启动Windows和Ubuntu。由于我不在桌面上使用任何麦克风,因此我开始使用名为“ WO Mic”的应用程序将Android手机的麦克风连接到Windows中的桌面。一个不错的选择,对不对?

好吧,可悲的是,WO Mic在任何基于Linux的操作系统上均不受支持,所以我想知道是否有其他替代品或任何应用程序可以通过WiFi或USB在Ubuntu上将我的手机用作麦克风。(但最好是wifi)。

Answers:


5

这个节目?您是否尝试过下载客户端/驱动程序并按照Ubuntu的说明进行操作?

  1. 加载驱动程序模块

    $ sudo insmod wo_snd_capture-x86.ko
    
  2. 从客户端连接

    • 由Wifi连接。您可以在WO Mic应用程序UI上找到IP地址。

      $ micclient-ubuntu-x86 -t Wifi 192.168.1.100
      
    • 通过蓝牙连接。

      $ micclient-ubuntu-x86 -t Bluetooth xx:xx:xx:xx:xx:xx
      

      xx:xx:xx:xx:xx:xx:xx代表电话蓝牙地址。您可以在手机上查询它:设置->关于手机->状态->蓝牙地址。

上面的示例适用于32位Ubuntu。如果使用的是64位,则将下载的客户端和驱动程序文件名替换为xxx-x86_64。


2
我知道了Please first load ALSA snd-aloop.,所以我需要这样做:sudo modprobe snd-aloop然后我必须以micclient-ubuntu-x86root 身份运行(使用sudo)。然后它起作用了,是的。
Amichai Schreiber'7

1
这是行不通的。
回声

如何通过USB连接?
Abhisekp

1
每次运行它时,我都会得到分段核心转储。我使用的是Linux Mint 18.3 x64
abhisekp

4

我使用Mumble(桌面客户端)+ Murmur(作为LAN服务器)+ Plumble(Android / iOS客户端)。这导致我实现了最低的延迟(听起来几乎像正常的环回,理论上7ms WiFi延迟+ 2x 10ms编解码器延迟= 27 ms)。

有关最新版本,请参见https://github.com/pzmarzly/mic_over_mumble

自述文件的片段(修订版8c827fe)

安装Mumble(桌面客户端)+ Murmur(服务器)+ Plumble(Android / iOS客户端)。设置所有3个程序以使用最佳质量和最小延迟。将移动客户端设置为始终流式播放。

要在Ubuntu上安装Mumble + Murmur,可以使用:

sudo apt install mumble mumble-server
sudo systemctl stop mumble-server.service
sudo systemctl disable mumble-server.service

复制到mic_over_mumble任何地方-将~/.mic_over_Mumble用作配置目录。

运行mic_over_mumble。它将启动LAN上的服务器,然后启动Mumble(如果要求提供昵称,请输入除SuperUser之外的任何内容)。然后将您的移动设备手动连接到LAN服务器。请注意,Mumble移动应用存在一些问题

然后,将程序设置为使用“ Monitor_of_Mumble”或“ VirtualMic”作为输入设备(它们已链接)。例如在OBS中:

OBS配置屏幕截图

mic_over_mumble脚本副本(修订版8c827fe)

#!/bin/bash
set -euo pipefail
# PAID = PulseAudio ID
# ID = PID / process ID

function main () {
    if [ ! -e ~/.mic_over_Mumble ]; then
        mkdir ~/.mic_over_Mumble
    fi
    cd ~/.mic_over_Mumble

    rm murmur.ini || true
    echo "bonjour=true" >> murmur.ini
    echo "bandwidth=130000" >> murmur.ini

    if [ ! -e ./initdone ]; then
        echo "You will need to configure Mumble client to use the lowest possible latency."
        echo "We will start Mumble now. Please complete setup wizard and go to settings to increase quality and decrease latency."
        echo "Also, mute your microphone (if you have one) in Mumble."
        echo "Then close Mumble."
        run_mumble_client_wizard
        touch ./initdone
    fi

    echo "Starting Mumble server (murmurd)..."
    run_mumble_server_bg
    sleep 5
    echo "Starting Mumble client..."
    MUMBLE_CLIENT_ID=$(run_mumble_client_bg)
    sleep 15
    echo "Fetching PulseAudio configuration..."
    MUMBLE_CLIENT_PAID=$(get_mumble_client_paid)

    echo "Changing PulseAudio configuration..."
    echo "Adding sink..."
    SINK_MODULE_PAID=$(add_sink)
    sleep 3

    echo "Fetching current configuration to redirect Mumble..."
    SINK_PAID=$(get_sink_paid)
    pacmd move-sink-input "$MUMBLE_CLIENT_PAID" "$SINK_PAID"

    echo "Adding a virtual microphone..."
    SOURCE_MODULE_PAID=$(add_source)

    echo "Done. Please use pavucontrol to ensure everything works."
    echo "Press Return to shut down..."
    read -n1 -s -r
    echo "Shutting down..."

    echo "Stopping Mumble client..."
    kill -KILL "$MUMBLE_CLIENT_ID" || true
    sleep 2
    echo "Stopping Mumble server..."
    # TODO: find a better way to kill murmurd
    # (it forks, so we cannot use its PID)
    pkill murmurd || true
    echo "Restoring PulseAudio configuration..."
    pactl unload-module "$SOURCE_MODULE_PAID"
    pactl unload-module "$SINK_MODULE_PAID"
}

function run_mumble_client_wizard () {
    mumble >/dev/null 2>&1
}

function run_mumble_client_bg () {
    MUMBLE_URL="mumble://localhost"
    mumble $MUMBLE_URL >/dev/null 2>&1 &
    echo $!
}

function run_mumble_server_bg () {
    murmurd -ini ./murmur.ini &
    # echo $!
    # TODO: here we can get murmur's PID
    # (uncomment the line above)
}

function get_mumble_client_paid () {
    pacmd list-sink-inputs |
        grep -F -e "index: " -e "media.name = " |
        cut_every_second_newline |
        grep -F -e "Mumble" |
        print_second_column
}

function add_sink () {
    pactl load-module \
        module-null-sink \
        sink_name=Loopback_of_Mumble \
        sink_properties=device.description=Loopback_of_Mumble
}

function add_source () {
    pactl load-module \
        module-virtual-source \
        source_name=VirtualMic \
        master=Loopback_of_Mumble.monitor \
        source_properties=device.description=VirtualMic
}

function get_sink_paid () {
    pacmd list-sinks |
        grep -F -e "index: " -e "name: " |
        cut_every_second_newline |
        grep -F -e "Loopback" |
        print_second_column
}

# https://serverfault.com/a/375098/449626
function cut_every_second_newline () {
    awk 'ORS=NR%2?" ":"\n"'
}

function print_second_column () {
    awk '{print $2}'
}

main

3

嗯,我之前尝试过该应用程序,但它对我不起作用,因此我建议使用以下方法:

  • 首先在电话上安装ip camera,然后安装pulseaudio,完成后,打开ipcamera并在电话上启动服务器,确保PC连接在同一网络上。
  • 打开Chrome或Firefox,然后键入ipcamera为您提供的IP地址(该ip将显示在应用程序中)。
  • 在浏览器中,单击音频播放器,然后选择HTML5,并确保听到声音。
  • 打开pulseaudio并转到“ 播放”选项卡,然后单击并显示并选择“ 所有流”。您将看到chrome或firefox应用程序正在播放麦克风。
  • 在“应用程序”部分中,选择“ Chrome或Firefox 回顾 ”;会将音频从手机重定向到麦克风通道,您可以执行相同操作,但使用VLC可以更好地处理滞后等问题。

无论如何要解决滞后问题?
swdev

2
嗯,我不确定,但是我认为如果您使用vlc,这篇文章可以为您提供帮助。 如何在VLC @swdev中修复跳过和滞后
Maxtermax,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.