저는 Bluetooth 어댑터와 함께 Raspberry Pi 0을 사용하고 있으며 Bluetooth 스피커로 mp3 파일을 재생하려고 합니다. 여러 번 시도한 끝에 연결에 성공했습니다. 모든 것이 작동하도록 실행한 명령의 전체 목록은 다음과 같습니다.
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 Player로 재생할 수 있습니다. 스피커는 내 전화기에서도 작동합니다.
이 문제를 해결하려면 어떻게 해야 합니까?
답변1
내가 하고 있는 일에는 두 가지 문제가 있는 것으로 밝혀졌습니다.
- Gstreamer는 때때로 mp3 파일을 지원합니다. 이 링크지원하는 형식에 대해. 교체하면 문제가
filesrc
해결되지만audiotestsrc ! convertaudio
변환이 필요한 이유는 잘 모르겠습니다. bluez_sink
블루투스 장치가 오디오 대상이기 때문에 대신 사용해야 합니다bluez_source
.
이것은 스피커에서 오디오를 재생하는 마지막 명령입니다.
gst-launch-1.0 audiotestsrc ! pulsesink device=bluez_sink.FC_58_FA_68_B4_8B