Я использую Raspberry pi zero с ключом Bluetooth, и я пытаюсь воспроизвести файл mp3 через Bluetooth оратор. Мне удалось подключить их обоих после долгих попыток, это полный список команд, которые я выполняю, чтобы все работало:
rfkill unblock 0
sudo hciconfig hci0 up
sudo hciconfig hci0 piscan
pulseaudio -k
pulseaudio -D
bluetoothctl -a
scan on
connect 30:95:E3:95:46:F7
exit
Чтобы теперь транслировать звук на динамик, я использую следующую команду gstreamer:
gst-launch-1.0 filesrc location=song.mp3 ! pulsesink device=bluez_source.30_95_E3_95_46_F7
И это приводит к следующей ошибке:
pi@raspberrypi:~ $ gst-launch-1.0 filesrc location=song.mp3 ! pulsesink device=bluez_source.30_95_E3_95_46_F7
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstPulseSink:pulsesink0: The stream is in the wrong format.
Additional debug info:
gstaudiobasesink.c(1119): gst_audio_base_sink_preroll (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0:
sink not negotiated.
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
song.mp3
- это обычный аудиофайл, я могу нормально воспроизвести его на моем телефоне, vlc и проигрывателе Windows Media. Динамик также отлично работает с моим телефоном.
Что я могу сделать, чтобы решить эту проблему?
Оказывается, в том, что я делал, были две проблемы:
filesrc
на audiotestsrc! convertaudio
исправляет это, хотя я не уверен, зачем его нужно преобразовывать. bluez_sink
вместо bluez_source
. Это последняя команда, позволяющая воспроизвести звук на динамике.
gst-launch-1.0 audiotestsrc ! pulsesink device=bluez_sink.FC_58_FA_68_B4_8B