I am trying to get an audio stream from Bluetooth to the stdin of fm_transmitter on my Raspberry Pi 3 / up-to-date Raspbian Stretch.

So far, I got FM-Transmitter running with an ICE-Cast-Stream using ffmpeg & my Pi is playing Music from Spotify via bluetooth (I installed blueman next to the things I followed from this Tutorial).

To archive this, I tried using ffmpeg -f s16le -i hw:0 - | fm_transmitter -f 87.6 - as mentioned in tutorials, and tested with all the other devices listed with aplay -L. But it can not listen to any of the sources / can't find it.

So as main concern, I am wondering which tool can link an audio-source to the pipe.

  • You can create a named pipe to output to fm transmission. From there you can create a sink to output to your named pipe: load-module module-pipe-sink file=/named/pipe sink_name=Fm_transmission , then stream to the new sink. – Brett Reinhard Dec 11 '17 at 5:56
  • Sorry, just saw using ffmpeg and stretch. Just assumed you were using pulseaudio when I saw Bluetooth. – Brett Reinhard Dec 11 '17 at 6:07

ffmpeg seems not to be able to do what I need and aplay -L wasn't capable of finding Bluetooth sources. But with pactl list sources short I finally found the A2DP-source.

Anyways, after messing around with sox, I finally got an audio signal from default-device to bash, but it was stuttering as I used the following command.

$ sox -d -t raw -r 22.05k -b 8 - gain -5 | fm_transmitter -f 87.6 -

After I thought of the sampling rate at first place being 44.8k, and the piped rate being 22.05k - which is not perfectly dividable - I tried different tempo rates.

I found tempo 0.97 being fine for me, still it stutters in the first seconds but then it works.

The only issue is, the tempo reduce adds a slight stacking delay - which isn't perfect nor real-time at all.

$ sox -d -t raw -b 8 -r 22050 - gain -5 tempo 0.97 | fm_transmitter -f 87.6 -

Playing: stdin, 22050 Hz, 16 bits, mono

Input File     : 'default' (alsa)
Channels       : 2
Sample Rate    : 48000
Precision      : 16-bit
Sample Encoding: 16-bit Signed Integer PCM

In:0.00% 00:07:15.97 [00:00:00.00] Out:9.90M [ =====|===== ] Hd:4.4 Clip:0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.