magicgoose/simple_dr_meter

Fails to read audio from a wav

dikonov opened this issue · 3 comments

I want to compute the DR value for a 6-channel 24bit 88Hz wav and simple_dr_meter failed to read it.

Output of ffprobe:

$ ffprobe 01.wav 
ffprobe version 4.4-alt1 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 10 (GCC)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --docdir=/usr/share/doc/ffmpeg-4.4 --disable-rpath --enable-gpl --enable-version3 --enable-pthreads --enable-shared --disable-static --enable-mmx --disable-nonfree --enable-ffplay --enable-ffprobe --enable-avfilter --enable-avresample --disable-avisynth --enable-bzlib --enable-chromaprint --enable-frei0r --enable-gnutls --disable-ladspa --enable-libaom --disable-libaribb24 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --disable-libcelt --enable-libcodec2 --enable-libdav1d --disable-libdavs2 --enable-libdc1394 --enable-libdrm --disable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --disable-libglslang --enable-libgme --enable-libgsm --disable-libilbc --enable-libjack --disable-libklvanc --disable-libkvazaar --disable-liblensfun --disable-libmfx --disable-libmodplug --enable-libmp3lame --enable-librabbitmq --disable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --disable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --disable-librtmp --enable-librubberband --disable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --disable-libtesseract --enable-libtheora --enable-libtwolame --enable-libudev --enable-libv4l2 --enable-libvidstab --disable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --disable-libxavs2 --enable-libxml2 --enable-libxvid --disable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --disable-omx --enable-openal --disable-opencl --enable-opengl --disable-pocketsphinx --enable-sdl2 --enable-vaapi --disable-vapoursynth --enable-vdpau --enable-vulkan --enable-zlib --enable-cuvid --enable-hardcoded-tables --enable-runtime-cpudetect --enable-debug --disable-stripping --enable-pic --extra-cflags='-pipe -frecord-gcc-switches -Wall -g -fPIC -DPIC' --extra-version=alt1
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, wav, from '01.wav':
  Metadata:
    originator_reference: CHDWESARACON00��3124618090171839
    time_reference  : 176359
    coding_history  : A=PCM,F=88200,W=24,M=6-channel 
                    :  
                    : A=PCM,F=88200,W=24,M=6chn,T=libsndfile-1.0.22pre2 
                    : 
  Duration: 00:03:44.77, bitrate: 12700 kb/s
  Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 88200 Hz, 6 channels, s32 (24 bit), 12700 kb/s

Error text:

$ simple_dr_meter 01.wav
Traceback (most recent call last):
  File "/usr/lib/python3/site-packages/simple_dr_meter/main.py", line 238, in <module>
    main()
  File "/usr/lib/python3/site-packages/simple_dr_meter/main.py", line 126, in main
    dr_log_items, dr_mean, dr_median = analyze_dr(in_path, track_cb, keep_precision)
  File "/usr/lib/python3/site-packages/simple_dr_meter/main.py", line 152, in analyze_dr
    audio_info = tuple(read_audio_info(in_path))
  File "/usr/lib/python3/site-packages/simple_dr_meter/audio_io/audio_io.py", line 242, in read_audio_info
    yield _audio_source_from_file(in_path)
  File "/usr/lib/python3/site-packages/simple_dr_meter/audio_io/audio_io.py", line 211, in _audio_source_from_file
    p = read_audio_file_metadata(in_path)
  File "/usr/lib/python3/site-packages/simple_dr_meter/audio_io/audio_io.py", line 302, in read_audio_file_metadata
    raise Exception('ffprobe returned {}'.format(returncode))
Exception: ffprobe returned 1

Can you provide a short slice of this file in the same format (like, 3 seconds or so)? That would help a lot with debugging and fixing.

I do not have that file anymore, but I can tell that I used audacity and sox to convert files. Audacity can produce test wavs of the same type with any combination of parameters.

I thought that the reason might be the python-ffmpeg interface. ffprobe command alone works, but my brief attempt at digging into the problem (I tried to disable the check for ffprobe return value) showed that python received null data.

I do not have that file anymore, but I can tell that I used audacity and sox to convert files. Audacity can produce test wavs of the same type with any combination of parameters.

No problem, any other file would be good too, as long as the bug reproduces on it.