Gstreamer 'Поток в неправильном формате.'

Я использую 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. Динамик также отлично работает с моим телефоном.

Что я могу сделать, чтобы решить эту проблему?

0
09.01.2017, 01:02
1 ответ

Оказывается, в том, что я делал, были две проблемы:

  • Gstreamer иногда поддерживает mp3-файлы, см. по этой ссылке , где указаны поддерживаемые форматы. Замена filesrc на audiotestsrc! convertaudio исправляет это, хотя я не уверен, зачем его нужно преобразовывать.
  • Поскольку устройство Bluetooth является аудио-целью, мне пришлось использовать bluez_sink вместо bluez_source .

Это последняя команда, позволяющая воспроизвести звук на динамике.

gst-launch-1.0 audiotestsrc ! pulsesink device=bluez_sink.FC_58_FA_68_B4_8B
0
28.01.2020, 04:48

Теги

Похожие вопросы