Gstreamer 'O fluxo está no formato errado.'

0

Estou usando um Raspberry pi zero com um dongle Bluetooth e estou tentando reproduzir um arquivo mp3 em um alto-falante Bluetooth. Consegui conectá-los depois de muita tentativa, esta é a lista completa de comandos que executo para que tudo funcione:

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

Para transmitir o áudio para o palestrante, estou usando o seguinte comando gstreamer:

gst-launch-1.0 filesrc location=song.mp3 ! pulsesink device=bluez_source.30_95_E3_95_46_F7

E isso resulta no seguinte erro:

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 é um arquivo de áudio normal, posso reproduzi-lo bem com meu telefone, vlc e windows media player. O orador também funciona bem com o meu telefone.

O que posso fazer para resolver este problema?

    
por Todd Sewell 09.01.2017 / 00:02

1 resposta

0

Acontece que havia dois problemas com o que eu estava fazendo:

  • O Gstreamer às vezes suporta arquivos mp3, consulte este link para os formatos suportados. Substituir o filesrc por audiotestsrc ! convertaudio corrige, embora eu não saiba por que ele precisa ser convertido.
  • Como o dispositivo Bluetooth é um destino de áudio, eu precisava usar bluez_sink em vez de bluez_src .

Este é o comando final que consegue reproduzir áudio no alto-falante.

gst-launch-1.0 audiotestsrc ! pulsesink device=bluez_source.FC_58_FA_68_B4_8B
    
por 11.01.2017 / 23:50