Playing RTL-SDR radio through VLC

About encoding, codec settings, muxers and filter usage
peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Playing RTL-SDR radio through VLC

Postby peppy.player » 13 Aug 2019 20:04

I didn't find a better place for this question.
I'd like to play FM radio streams from RTL-SDR USB dongle. Here is the whole shell command for that using 'aplay' as the audio player:

rtl_fm -M fm -l 0 -A std -p 0 -s 171k -g 20 -F 9 -f 97.3M | redsea -e | aplay -r 171000 -f S16_LE

'redsea' is for getting RDS messages (artist name, song name etc) from FM signal.
Is is possible to use 'cvlc' instead of 'aplay' ? I couldn't find a way to define sample rate and signal format as command line arguments for 'cvlc'.
If I put 'cvlc' without any arguments it doesn't work.

Thanks in advance!

Rémi Denis-Courmont
Developer
Developer
Posts: 15266
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: Playing RTL-SDR radio through VLC

Postby Rémi Denis-Courmont » 13 Aug 2019 22:03

If it's a proper ALSA device, it should show under Audio capture in the playlist. Otherwise, you need to open it manually with alsa:// or pulse:// followed by the device name.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Re: Playing RTL-SDR radio through VLC

Postby peppy.player » 13 Aug 2019 22:22

I can probably define Alsa and device using these command line arguments:
--aout=alsa --alsa-audio-device=hw

The question is more about sample rate and format of the input stream. Can 'cvlc' auto-detect that or should I specify it in a similar way as I'm doing that for 'aplay'? If the latter how can I do that?
Thanks!

peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Re: Playing RTL-SDR radio through VLC

Postby peppy.player » 15 Aug 2019 05:36

There is the option "-" for reading from 'stdin': https://wiki.videolan.org/Uncommon_uses/
So I tried:
rtl_fm -M fm -l 0 -A std -p 0 -s 171k -g 20 -F 9 -f 97.3M | redsea -e | cvlc -
and got the following messages:
VLC media player 2.2.6 Umbrella (revision 2.2.6-0-g1aae78981c)
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
[001b90c8] pulse audio output error: PulseAudio server connection failure: Connection refused
[001d3568] core interface error: no suitable interface module
[0011f918] core libvlc error: interface "globalhotkeys,none" initialization failed
[001d3568] dbus interface error: Failed to connect to the D-Bus session daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[001d3568] core interface error: no suitable interface module
[0011f918] core libvlc error: interface "dbus,none" initialization failed
[001d3568] dummy interface: using the dummy interface module...
Found Rafael Micro R820T tuner
Tuner gain set to 19.70 dB.
Tuned to 97642000 Hz.
Oversampling input by: 8x.
Oversampling output by: 1x.
Buffer size: 5.99ms
Exact sample rate is: 1368000.013046 Hz
Sampling at 1368000 S/s.
Output at 171000 Hz.
[mp3 @ 0x73836cf0] Header missing
[mp3 @ 0x73836cf0] Header missing
[mp3 @ 0x73836cf0] Header missing
...

So it looks like vlc cannot detect the input stream format.The same question still remains - how can I define the sample rate of the input stream?
Thanks!

peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Re: Playing RTL-SDR radio through VLC

Postby peppy.player » 15 Aug 2019 05:51

If I create named pipe/fifo:
mkfifo fff
And then run:
rtl_fm -M fm -l 0 -A std -p 0 -s 171k -g 20 -F 9 -f 97.3M | redsea -e > fff
and run vlc in separate terminal:
cvlc fff
I had the same result:
[mp3 @ 0x73d39180] Header missing

mplayer also fails:
mplayer fff
MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team

Playing fff.
libavformat version 57.56.101 (external)
Mismatching header version 57.56.100
Cannot seek backward in linear streams!
Seek failed
Cannot seek backward in linear streams!
Seek failed
...

Rémi Denis-Courmont
Developer
Developer
Posts: 15266
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: Playing RTL-SDR radio through VLC

Postby Rémi Denis-Courmont » 15 Aug 2019 16:57

VLC negotiates the sample format and sample rate automatically with the ALSA device driver, of course.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Re: Playing RTL-SDR radio through VLC

Postby peppy.player » 15 Aug 2019 18:21

Does it mean that vlc cannot detect input stream format? As I mentioned 'aplay' works fine if I define the sample rate and format:
aplay -r 171000 -f S16_LE

I use vlc as the main audio player in my own app. It would be a pity to switch to 'aplay' just for handling RTL-SDR radio streams. But so far I didn't find any way to make vlc working :(

peppy.player
Blank Cone
Blank Cone
Posts: 38
Joined: 10 Nov 2017 00:07

Re: Playing RTL-SDR radio through VLC

Postby peppy.player » 17 Aug 2019 07:04

Just in case anybody else will need a solution here are the command line parameters which define the sample rate and format of the input stream:

rtl_fm -M fm -l 0 -A std -p 0 -s 171k -g 20 -F 9 -f 97.3M | redsea -e | cvlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=171000 --rawaud-fourcc=s16l -

The dash in the end can be replaced either by stream:///dev/stdin or fd://0

The solution was suggested at the diyAudio forum: https://www.diyaudio.com/forums/pc-based/341527-playing-rtl-sdr-radio-vlc.html#post5886696


Return to “VLC stream-output (sout)”

Who is online

Users browsing this forum: No registered users and 30 guests