openbroadcaster / obplayer

:radio: OBPlayer Streaming Automation Playout with CAP EAS Alerting
https://openbroadcaster.com
GNU Affero General Public License v3.0
119 stars 46 forks source link

offair audio recording stops working randomly with rtl-sdr #123

Open mgodiya opened 1 year ago

mgodiya commented 1 year ago

Problem: Offair audio logging stops working randomly.

OS used: RaspberryPi debian bullseye, Ubuntu Desktop 22.04.2 LTS player version: same result on multiple versions including 5.2, 5.3.

steps to reproduce:

  1. apply my patch to fix type casting and some changes I made to get this module working in obplayer/offair_audiolog/recorder.py (diff file attachmented as diff-recorder.txt)
  2. enable offair recordings from player dashboard > Admin > Experimental Settings > Show SDR Streaming/Logging settings
  3. configure settings to start stream logging under Output > Enable Audio Logging, Enable Off Air Audio Logging, Streaming server ip, Streaming server mountpoint, Streaming server password, Streaming server bitrate, Streaming server port
  4. tail the OB and icecast logs and wait for the socket timeout. Attempt 1 Attached file: log-attempt1.txt Attempt 2 Attached file: log-attempt2.txt diff-recorder.txt log-attempt1.txt log-attempt2.txt

EDIT: Notes/observations on further testing: After every time I stop hearing the radio on localhost:8000/off_air, I waited for random times and restarted the player. All the times I have done this, the file size is same for all recored wav files. -rw-rw-r-- 1 mohit mohit 29147181 Apr 15 13:18 2023-04-15_13:07:43.wav -rw-rw-r-- 1 mohit mohit 29147181 Apr 15 13:29 2023-04-15_13:18:37.wav -rw-rw-r-- 1 mohit mohit 29147181 Apr 15 13:38 2023-04-15_13:29:32.wav Maybe this is something related to some buffer??

mgodiya commented 1 year ago

UPDATE: I didnt find a solution to this as I dont know how to debug this any more. Maybe this is a gstreamer thing, or something at the protocol level.

My solution to this is: running the following as a service rtl_fm -f 92.5M -M wbfm -r 8000 | ffmpeg -f s16le -ar 44100 -i - -acodec libmp3lame -ab 32k -content_type audio/mp3 -f mp3 icecast://source:hackme@localhost:8000/off_air and a cronjob to rip the audio from the off_air mount in 1 hour chunks using streamripper