Troubleshooting

The first stop in any troubleshooting should always be to review logs. Whether you understand everything you read or barely a word, it will give you at least a few key words to start searching with.

Inspect ffmpeg

With loglevel set to DEBUG in config.yml, the constructed ffmpeg will be logged, prefixed with: Constructed ffmpeg command:

echo 'loglevel: DEBUG' >>config.yml
python3 -m apr -a monitor

DEBUG:Constructed ffmpeg command: ffmpeg -y -loglevel error -nostdin -nostats -f v4l2 -video_size 1920x1080 -framerate 5 -thread_queue_size 1024 -i /dev/video0 -f alsa -thread_queue_size 1024 -i hw:CARD=Generic_1,DEV=0 -vf drawtext=fontfile=/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf:text="%{localtime}":fontcolor=red@0.8:x=7:y=7 -preset medium -t 00:01:30

Simply copy/paste, add filename.mkv to the end.

Python Debugger

When threading is not a concern, pudb is the absolute best python debugger.

Replace python3 with pudb3 to use:

pudb3 -m apr -a monitor

Pip Space

If pip install runs out of space, the following error will be encountered:

raise ProtocolError("Connection broken: %r" % e, e)
pip._vendor.urllib3.exceptions.ProtocolError: ("Connection broken:
    OSError(28, 'No space left on device')",
    OSError(28, 'No space left on device'))

This can be resolved by telling pip to use a different build directory:

mkdir '../piptmp'
TMPDIR='../piptmp' pip install '[...]'

Log Noise

APR Review can produce a lot of log output when reviewing videos:

Input #0, wav, from '/tmp/tmpy3th2041.wav':   0KB sq=    0B f=0/0
  Duration: 00:00:01.10, bitrate: 1536 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz,
               2 channels, s16, 1536 kb/s
   1.02 M-A:  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

This noise is generated by a default log level showing playback status of each 1-second audio clip. Unfortunately this cannot currently be modified.

APR’s requirements.txt includes simpleaudio. Simply having this python module available changes other behavior, effectively hiding this log noise.

label2index KeyError

This error shows up because unexpected directories were found in data directories.

File "/home/michael/repos/audio_pattern_ranger/apr/model/nnet.py", line 110, in __getitem__
  label = self.label2index[class_name]
          ~~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'barking'

This likely requires more careful coding to resolve.