В Raspbian беспроводные соединения обычно управляютсяwpa_supplicant
(также графическим интерфейсом ). Просто установить network-manager
для его использования недостаточно, как изложено в этом ответе , который дает вам указания, как заставить network-manager
работать на Raspbian.
Если вы не настаиваете на использовании network-manager
, попробуйте средство командной строки wpa_cli
из wpa_supplicant
.
Вот как вы подключаетесь к сети с wpa_cli
в интерактивном режиме (замените wlan0
на имя вашего беспроводного интерфейса, AP_NAME
на имя вашей точки доступа, passphrase
на парольную фразу точки доступа и 0
с номером, напечатанным в stdout
послеADD_NETWORK
):
sudo wpa_cli -i wlan0
> ADD_NETWORK
> SET_NETWORK 0 ssid "AP_NAME"
> SET_NETWORK 0 psk "passphrase"
> ENABLE_NETWORK 0
> quit
Если вы не хотите использовать интерактивный режим, вам просто нужно указать команду после опций. См. несколько примеров здесь:
Если вы хотите отключиться, используйте
sudo wpa_cli -i wlan0 DISCONNECT
Чтобы получить список всех сетей, используйте
sudo wpa_cli -i wlan0 LIST_NETWORKS
Чтобы удалить сохраненную сеть с id=0, используйте
sudo wpa_cli -i wlan0 REMOVE_NETWORK 0
Список команд, которые можно использовать с wpa_cli
, можно найти, например. здесь .
Я бы рекомендовал использовать VLC на «Алисе» для потоковой передачи аудио через RTP на локальный адрес, а затем попросить «Боба» прослушивать этот адрес + порт и записывать аудиозаписи. Сложная часть будет заключаться в определении локатора медиаресурсов MRL ()для вашего устройства ввода звука.
Команда потоковой передачи будет выглядеть следующим образом:
cvlc alsa://<input_device> --sout-keep --no-sout-video --sout="#transcode{acodec=mpga,ab=<bit_rate>,aenc=ffmpeg,channels=<n_channels>,samplerate=<sample_freq>,threads=2}:rtp{mux=ts,dst=<stream_address>,port=<stream_port>,sdp=sap,proto=udp}" &
Где:
input_device
— это аппаратный адрес ALSA вашего микрофона; вы, вероятно, можете найти это, запустив cat /proc/asound/cards
; если микрофон привязан к звуковой карте 1, то input_device
должен выглядеть какhw:1,0
bit_rate
не является обязательным, но обычно должно быть 64 *n_channels
(, то есть 64 для моно, 128 для стерео или даже 264 для превосходного качества звука)n_channels
количество аудиоканалов, поддерживаемых вашим микрофоном (1 для моно, 2 для стерео)sample_freq
также зависит от вашего микрофона; должно быть значение, подобное 44100 или 48000, но может быть меньше (единиц в Гц)stream_address
должен быть произвольным многоадресным IP-адресом по вашему выбору, например 239.255.12.42 stream_port
также является произвольным портом по вашему выбору, например 1234 Затем на «Бобе», чтобы получить поток живого аудио (и воспроизвести его на устройстве вывода звука по умолчанию ), введите эту команду:
vlc -vv rtp://@<stream_address>:<stream_port>
Обратите внимание, что cvlc
просто запускает VLC без графического интерфейса, что является синонимом vlc -I dummy
.
Затем вы можете написать базовый сценарий с циклом, который генерирует имена выходных звуковых файлов (out_file_name
), запускает следующую команду VLC для прослушивания и записи звука в этот выходной файл в течение некоторого времени, а затем убивает этот процесс VLC (в данном случае сохранение звука в формате WAV):
cvlc --no-sout-video --sout-audio --ttl=1 --sout-keep --sout "#transcode{acodec=mpga,ab=<bit_rate>,aenc=ffmpeg,channels=<n_channels>,samplerate=<sample_freq>,threads=2}:std{access=file,mux=wav,dst=<out_file_name>}" rtp://@<stream_address>:<stream_port> vlc://quit &
После каждого запуска вышеуказанной команды в вашем цикле просто подождите столько времени, сколько вы хотите, чтобы запись была, а затем завершите этот процесс фонового прослушивания с помощью kill -9 $!
или pkill vlc
.