Closed alexmbird closed 5 years ago
Which version of ffmpeg are you using (ffmpeg -version
)?
$ ffmpeg -version
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Getting the same experience with a recent build of ffmpeg's master branch, too.
Can you post the output of:
$ ffmpeg -filters
ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Filters:
T.. = Timeline support
.S. = Slice threading
..C = Command support
A = Audio input/output
V = Video input/output
N = Dynamic number and/or type of input/output
| = Source or sink filter
... abench A->A Benchmark part of a filtergraph.
... acompressor A->A Audio compressor.
... acopy A->A Copy the input audio unchanged to the output.
... acrossfade AA->A Cross fade two input audio streams.
... acrusher A->A Reduce audio bit resolution.
T.. adelay A->A Delay one or more audio channels.
... aecho A->A Add echoing to the audio.
... aemphasis A->A Audio emphasis.
... aeval A->A Filter audio signal according to a specified expression.
T.. afade A->A Fade in/out input audio.
... afftfilt A->A Apply arbitrary expressions to samples in frequency domain.
.S. afir AA->A Apply Finite Impulse Response filter with supplied coefficients in 2nd stream.
... aformat A->A Convert the input audio to one of the specified formats.
... agate A->A Audio gate.
... ainterleave N->A Temporally interleave audio inputs.
... alimiter A->A Audio lookahead limiter.
... allpass A->A Apply a two-pole all-pass filter.
... aloop A->A Loop audio samples.
... amerge N->A Merge two or more audio streams into a single multi-channel stream.
T.. ametadata A->A Manipulate audio frame metadata.
... amix N->A Audio mixing.
..C anequalizer A->N Apply high-order audio parametric multi band equalizer.
... anull A->A Pass the source unchanged to the output.
T.. apad A->A Pad audio with silence.
... aperms A->A Set permissions for the output audio frame.
... aphaser A->A Add a phasing effect to the audio.
... apulsator A->A Audio pulsator.
... arealtime A->A Slow down filtering to match realtime.
... aresample A->A Resample audio data.
... areverse A->A Reverse an audio clip.
... aselect A->N Select audio frames to pass in output.
... asendcmd A->A Send commands to filters.
... asetnsamples A->A Set the number of samples for each output audio frames.
... asetpts A->A Set PTS for the output audio frame.
... asetrate A->A Change the sample rate without altering the data.
... asettb A->A Set timebase for the audio output link.
... ashowinfo A->A Show textual information for each audio frame.
T.. asidedata A->A Manipulate audio frame side data.
... asplit A->N Pass on the audio input to N audio outputs.
... astats A->A Show time domain statistics about audio frames.
..C astreamselect N->N Select audio streams
..C atempo A->A Adjust audio tempo.
... atrim A->A Pick one continuous section from the input, drop the rest.
... azmq A->A Receive commands through ZMQ and broker them to filters.
... bandpass A->A Apply a two-pole Butterworth band-pass filter.
... bandreject A->A Apply a two-pole Butterworth band-reject filter.
... bass A->A Boost or cut lower frequencies.
... biquad A->A Apply a biquad IIR filter with the given coefficients.
... bs2b A->A Bauer stereo-to-binaural filter.
... channelmap A->A Remap audio channels.
... channelsplit A->N Split audio into per-channel streams.
... chorus A->A Add a chorus effect to the audio.
... compand A->A Compress or expand audio dynamic range.
... compensationdelay A->A Audio Compensation Delay Line.
... crossfeed A->A Apply headphone crossfeed filter.
... crystalizer A->A Simple expand audio dynamic range filter.
T.. dcshift A->A Apply a DC shift to the audio.
... dynaudnorm A->A Dynamic Audio Normalizer.
... earwax A->A Widen the stereo image.
... ebur128 A->N EBU R128 scanner.
... equalizer A->A Apply two-pole peaking equalization (EQ) filter.
... extrastereo A->A Increase difference between stereo audio channels.
..C firequalizer A->A Finite Impulse Response Equalizer.
... flanger A->A Apply a flanging effect to the audio.
... haas A->A Apply Haas Stereo Enhancer.
... hdcd A->A Apply High Definition Compatible Digital (HDCD) decoding.
.S. headphone N->A Apply headphone binaural spatialization with HRTFs in additional streams.
... highpass A->A Apply a high-pass filter with 3dB point frequency.
... join N->A Join multiple audio streams into multi-channel output.
..C ladspa N->A Apply LADSPA effect.
... loudnorm A->A EBU R128 loudness normalization
... lowpass A->A Apply a low-pass filter with 3dB point frequency.
... pan A->A Remix channels with coefficients (panning).
... replaygain A->A ReplayGain scanner.
... resample A->A Audio resampling and conversion.
..C rubberband A->A Apply time-stretching and pitch-shifting.
... sidechaincompress AA->A Sidechain compressor.
... sidechaingate AA->A Audio sidechain gate.
... silencedetect A->A Detect silence.
... silenceremove A->A Remove silence.
.S. sofalizer A->A SOFAlizer (Spatially Oriented Format for Acoustics).
... stereotools A->A Apply various stereo tools.
... stereowiden A->A Apply stereo widening effect.
... superequalizer A->A Apply 18 band equalization filter.
.S. surround A->A Apply audio surround upmix filter.
... treble A->A Boost or cut upper frequencies.
... tremolo A->A Apply tremolo effect.
... vibrato A->A Apply vibrato effect.
T.C volume A->A Change input volume.
... volumedetect A->A Detect audio volume.
... aevalsrc |->A Generate an audio signal generated by an expression.
... anoisesrc |->A Generate a noise audio signal.
... anullsrc |->A Null audio source, return empty audio frames.
... flite |->A Synthesize voice from text using libflite.
... sine |->A Generate sine wave audio signal.
... anullsink A->| Do absolutely nothing with the input audio.
... alphaextract V->N Extract an alpha channel as a grayscale image component.
... alphamerge VV->V Copy the luma value of the second input into the alpha channel of the first input.
... ass V->V Render ASS subtitles onto input video using the libass library.
TS. atadenoise V->V Apply an Adaptive Temporal Averaging Denoiser.
TS. avgblur V->V Apply Average Blur filter.
T.. bbox V->V Compute bounding box for each frame.
... bench V->V Benchmark part of a filtergraph.
T.. bitplanenoise V->V Measure bit plane noise.
... blackdetect V->V Detect video intervals that are (almost) black.
... blackframe V->V Detect frames that are (almost) black.
TS. blend VV->V Blend two video frames into each other.
T.. boxblur V->V Blur the input.
TS. bwdif V->V Deinterlace the input image.
TS. chromakey V->V Turns a certain color into transparency. Operates on YUV colors.
... ciescope V->V Video CIE scope.
T.. codecview V->V Visualize information about some codecs.
T.. colorbalance V->V Adjust the color balance.
T.. colorchannelmixer V->V Adjust colors by mixing color channels.
TS. colorkey V->V Turns a certain color into transparency. Operates on RGB colors.
T.. colorlevels V->V Adjust the color levels.
TS. colormatrix V->V Convert color matrix.
TS. colorspace V->V Convert between colorspaces.
TS. convolution V->V Apply convolution filter.
T.. convolve VV->V Convolve first video stream with second video stream.
... copy V->V Copy the input video unchanged to the output.
... cover_rect V->V Find and cover a user specified object.
..C crop V->V Crop the input video.
T.. cropdetect V->V Auto-detect crop size.
TS. curves V->V Adjust components curves.
.S. datascope V->V Video data analysis.
TS. dctdnoiz V->V Denoise frames using 2D DCT.
TS. deband V->V Debands video.
... decimate N->V Decimate frames (post field matching filter).
T.. deflate V->V Apply deflate effect.
... deflicker V->V Remove temporal frame luminance variations.
... deinterlace_vaapi V->V Deinterlacing of VAAPI surfaces
... dejudder V->V Remove judder produced by pullup.
T.. delogo V->V Remove logo from input video.
... deshake V->V Stabilize shaky video.
TS. despill V->V Despill video.
... detelecine V->V Apply an inverse telecine pattern.
T.. dilation V->V Apply dilation effect.
T.. displace VVV->V Displace pixels.
... doubleweave V->V Weave input video fields into double number of frames.
T.. drawbox V->V Draw a colored box on the input video.
... drawgraph V->V Draw a graph using input video metadata.
T.. drawgrid V->V Draw a colored grid on the input video.
T.C drawtext V->V Draw text on top of video frames using libfreetype library.
T.. edgedetect V->V Detect and draw edge.
... elbg V->V Apply posterize effect, using the ELBG algorithm.
T.C eq V->V Adjust brightness, contrast, gamma, and saturation.
T.. erosion V->V Apply erosion effect.
... extractplanes V->N Extract planes as grayscale frames.
.S. fade V->V Fade in/out input video.
T.. fftfilt V->V Apply arbitrary expressions to pixels in frequency domain.
... field V->V Extract a field from the input video.
... fieldhint V->V Field matching using hints.
... fieldmatch N->V Field matching for inverse telecine.
T.. fieldorder V->V Set the field order.
... find_rect V->V Find a user specified object.
T.. floodfill V->V Fill area with same color with another color.
... format V->V Convert the input video to one of the specified pixel formats.
... fps V->V Force constant framerate.
... framepack VV->V Generate a frame packed stereoscopic video.
... framerate V->V Upsamples or downsamples progressive source between specified frame rates.
T.. framestep V->V Select one frame every N frames.
... frei0r V->V Apply a frei0r effect.
T.. fspp V->V Apply Fast Simple Post-processing filter.
TS. gblur V->V Apply Gaussian Blur filter.
T.. geq V->V Apply generic equation to each pixel.
T.. gradfun V->V Debands video quickly using gradients.
TS. haldclut VV->V Adjust colors using a Hald CLUT.
TS. hflip V->V Horizontally flip the input video.
T.. histeq V->V Apply global color histogram equalization.
... histogram V->V Compute and draw a histogram.
T.. hqdn3d V->V Apply a High Quality 3D Denoiser.
.S. hqx V->V Scale the input by 2, 3 or 4 using the hq*x magnification algorithm.
... hstack N->V Stack video inputs horizontally.
T.C hue V->V Adjust the hue and saturation of the input video.
... hwdownload V->V Download a hardware frame to a normal frame
... hwmap V->V Map hardware frames
... hwupload V->V Upload a normal frame to a hardware frame
... hwupload_cuda V->V Upload a system memory frame to a CUDA device.
T.. hysteresis VV->V Grow first stream into second stream by connecting components.
... idet V->V Interlace detect Filter.
T.. il V->V Deinterleave or interleave fields.
T.. inflate V->V Apply inflate effect.
... interlace V->V Convert progressive video into interlaced.
... interleave N->V Temporally interleave video inputs.
... kerndeint V->V Apply kernel deinterlacing to the input.
.S. lenscorrection V->V Rectify the image by correcting for lens distortion.
T.. limiter V->V Limit pixels components to the specified range.
... loop V->V Loop video frames.
TS. lumakey V->V Turns a certain luma into transparency.
T.. lut V->V Compute and apply a lookup table to the RGB/YUV input video.
T.. lut2 VV->V Compute and apply a lookup table from two video inputs.
TS. lut3d V->V Adjust colors using a 3D LUT.
T.. lutrgb V->V Compute and apply a lookup table to the RGB input video.
T.. lutyuv V->V Compute and apply a lookup table to the YUV input video.
T.. maskedclamp VVV->V Clamp first stream with second stream and third stream.
T.. maskedmerge VVV->V Merge first stream with second stream using third stream as mask.
... mcdeint V->V Apply motion compensating deinterlacing.
... mergeplanes N->V Merge planes.
... mestimate V->V Generate motion vectors.
T.. metadata V->V Manipulate video frame metadata.
T.. midequalizer VV->V Apply Midway Equalization.
... minterpolate V->V Frame rate conversion using Motion Interpolation.
... mpdecimate V->V Remove near-duplicate frames.
T.. negate V->V Negate input video.
TS. nlmeans V->V Non-local means denoiser.
T.. nnedi V->V Apply neural network edge directed interpolation intra-only deinterlacer.
... noformat V->V Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
TS. noise V->V Add noise.
... null V->V Pass the source unchanged to the output.
T.. oscilloscope V->V 2D Video Oscilloscope.
T.C overlay VV->V Overlay a video source on top of the input.
T.. owdenoise V->V Denoise using wavelets.
... pad V->V Pad the input video.
... palettegen V->V Find the optimal palette for a given stream.
... paletteuse VV->V Use a palette to downsample an input video stream.
... perms V->V Set permissions for the output video frame.
TS. perspective V->V Correct the perspective of video.
T.. phase V->V Phase shift fields.
... pixdesctest V->V Test pixel format definitions.
T.. pixscope V->V Pixel data analysis.
T.C pp V->V Filter video using libpostproc.
T.. pp7 V->V Apply Postprocessing 7 filter.
T.. premultiply N->V PreMultiply first stream with first plane of second stream.
TS. prewitt V->V Apply prewitt operator.
T.. pseudocolor V->V Make pseudocolored video frames.
... psnr VV->V Calculate the PSNR between two video streams.
... pullup V->V Pullup from field sequence to frames.
T.. qp V->V Change video quantization parameters.
... random V->V Return random frames.
T.. readeia608 V->V Read EIA-608 Closed Caption codes from input video and write them to frame metadata.
... readvitc V->V Read vertical interval timecode and write it to frame metadata.
... realtime V->V Slow down filtering to match realtime.
T.. remap VVV->V Remap pixels.
TS. removegrain V->V Remove grain.
T.. removelogo V->V Remove a TV logo based on a mask image.
... repeatfields V->V Hard repeat fields based on MPEG repeat field flag.
... reverse V->V Reverse a clip.
TS. roberts V->V Apply roberts cross operator.
TSC rotate V->V Rotate the input image.
T.. sab V->V Apply shape adaptive blur.
..C scale V->V Scale the input video size and/or convert the image format.
... scale_vaapi V->V Scale to/from VAAPI surfaces.
..C scale2ref VV->VV Scale the input video size and/or convert the image format to the given reference.
... select V->N Select video frames to pass in output.
TS. selectivecolor V->V Apply CMYK adjustments to specific color ranges.
... sendcmd V->V Send commands to filters.
... separatefields V->V Split input video frames into fields.
... setdar V->V Set the frame display aspect ratio.
... setfield V->V Force field for the output video frame.
... setpts V->V Set PTS for the output video frame.
... setsar V->V Set the pixel sample aspect ratio.
... settb V->V Set timebase for the video output link.
... showinfo V->V Show textual information for each video frame.
T.. showpalette V->V Display frame palette.
T.. shuffleframes V->V Shuffle video frames.
... shuffleplanes V->V Shuffle video planes.
T.. sidedata V->V Manipulate video frame side data.
.S. signalstats V->V Generate statistics from video analysis.
... signature N->V Calculate the MPEG-7 video signature
T.. smartblur V->V Blur the input video without impacting the outlines.
TS. sobel V->V Apply sobel operator.
... split V->N Pass on the input to N video outputs.
T.C spp V->V Apply a simple post processing filter.
... ssim VV->V Calculate the SSIM between two video streams.
.S. stereo3d V->V Convert video stereoscopic 3D view.
..C streamselect N->N Select video streams
... subtitles V->V Render text subtitles onto input video using the libass library.
... super2xsai V->V Scale the input by 2x using the Super2xSaI pixel art algorithm.
T.. swaprect V->V Swap 2 rectangular objects in video.
T.. swapuv V->V Swap U and V components.
.S. tblend V->V Blend successive frames.
... telecine V->V Apply a telecine pattern.
T.. threshold VVVV->V Threshold first video stream using other video streams.
... thumbnail V->V Select the most representative frame in a given sequence of consecutive frames.
... tile V->V Tile several successive frames together.
... tinterlace V->V Perform temporal field interlacing.
... tlut2 V->V Compute and apply a lookup table from two successive frames.
... tonemap V->V Conversion to/from different dynamic ranges.
.S. transpose V->V Transpose input video.
... trim V->V Pick one continuous section from the input, drop the rest.
T.. unpremultiply N->V UnPreMultiply first stream with first plane of second stream.
T.. unsharp V->V Sharpen or blur the input video.
T.. uspp V->V Apply Ultra Simple / Slow Post-processing filter.
T.. vaguedenoiser V->V Apply a Wavelet based Denoiser.
... vectorscope V->V Video vectorscope.
T.. vflip V->V Flip the input video vertically.
T.. vignette V->V Make or reverse a vignette effect.
... vmafmotion V->V Calculate the VMAF Motion score.
... vstack N->V Stack video inputs vertically.
TS. w3fdif V->V Apply Martin Weston three field deinterlace.
... waveform V->V Video waveform monitor.
... weave V->V Weave input video fields into frames.
.S. xbr V->V Scale the input using xBR algorithm.
TS. yadif V->V Deinterlace the input image.
... zmq V->V Receive commands through ZMQ and broker them to filters.
... zoompan V->V Apply Zoom & Pan effect.
... allrgb |->V Generate all RGB colors.
... allyuv |->V Generate all yuv colors.
... cellauto |->V Create pattern generated by an elementary cellular automaton.
..C color |->V Provide an uniformly colored input.
... frei0r_src |->V Generate a frei0r source.
... haldclutsrc |->V Provide an identity Hald CLUT.
... life |->V Create life.
... mandelbrot |->V Render a Mandelbrot fractal.
... mptestsrc |->V Generate various test pattern.
... nullsrc |->V Null video source, return unprocessed video frames.
... rgbtestsrc |->V Generate RGB test pattern.
... smptebars |->V Generate SMPTE color bars.
... smptehdbars |->V Generate SMPTE HD color bars.
... testsrc |->V Generate test pattern.
... testsrc2 |->V Generate another test pattern.
... yuvtestsrc |->V Generate YUV test pattern.
... nullsink V->| Do absolutely nothing with the input video.
... abitscope A->V Convert input audio to audio bit scope video output.
... adrawgraph A->V Draw a graph using input audio metadata.
... ahistogram A->V Convert input audio to histogram video output.
... aphasemeter A->N Convert input audio to phase meter video output.
... avectorscope A->V Convert input audio to vectorscope video output.
... concat N->N Concatenate audio and video streams.
... showcqt A->V Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output.
... showfreqs A->V Convert input audio to a frequencies video output.
.S. showspectrum A->V Convert input audio to a spectrum video output.
.S. showspectrumpic A->V Convert input audio to a spectrum video output single picture.
... showvolume A->V Convert input audio volume to video output.
... showwaves A->V Convert input audio to a video output.
... showwavespic A->V Convert input audio to a video output single picture.
... spectrumsynth VV->A Convert input spectrum videos to audio output.
..C amovie |->N Read audio from a movie source.
..C movie |->N Read from a movie source.
... abuffer |->A Buffer audio frames, and make them accessible to the filterchain.
... buffer |->V Buffer video frames, and make them accessible to the filterchain.
... abuffersink A->| Buffer audio frames, and make them available to the end of the filter graph.
... buffersink V->| Buffer video frames, and make them available to the end of the filter graph.
... afifo A->A Buffer input frames and send them when they are requested.
... fifo V->V Buffer input images and send them when they are requested.
$ r128gain -r -a -o -v debug .
2019-05-07 14:17:04,535 MainThread: Detected FFmpeg lib versions: libavutil: 55.78.100, libavcodec: 57.107.100, libavformat: 57.83.100, libavdevice: 57.10.100, libavfilter: 6.107.100, libavresample: 3.7.0, libswscale: 4.8.100, libswresample: 2.9.100, libpostproc: 54.7.100
2019-05-07 14:17:04,770 ThreadPoolExecutor-0_0: Analyzing loudness of files './10 - Vision Incision.opus', './02 - Kool Roc Bass.opus', './04 - Blisters on My Brain.opus', './08 - Lazer Sheep Dip Funk.opus', './11 - Nightime Story.opus', './06 - I Used to Fall in Love.opus', './07 - Battle Flag (feat. Pigeonhed).opus', './09 - Will I Get Out of Jail?.opus', './05 - How to Operate With a Blown Mind.opus', './01 - Warming Up the Brain Farm.opus', './03 - Kasparov's Revenge.opus'...
2019-05-07 14:17:04,795 ThreadPoolExecutor-0_1: Analyzing loudness of file './10 - Vision Incision.opus'...
2019-05-07 14:17:04,955 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./10 - Vision Incision.opus" -threads:1 1 -i "./02 - Kool Roc Bass.opus" -threads:2 1 -i "./04 - Blisters on My Brain.opus" -threads:3 1 -i "./08 - Lazer Sheep Dip Funk.opus" -threads:4 1 -i "./11 - Nightime Story.opus" -threads:5 1 -i "./06 - I Used to Fall in Love.opus" -threads:6 1 -i "./07 - Battle Flag (feat. Pigeonhed).opus" -threads:7 1 -i "./09 - Will I Get Out of Jail?.opus" -threads:8 1 -i "./05 - How to Operate With a Blown Mind.opus" -threads:9 1 -i "./01 - Warming Up the Brain Farm.opus" -threads:10 1 -i "./03 - Kasparov's Revenge.opus" -filter_threads 1 -map a -filter_complex "[0:a]anul[a_r128_in_0]; [a_r128_in_0]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_0]; [1:a]anul[a_r128_in_1]; [a_r128_in_1]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_1]; [2:a]anul[a_r128_in_2]; [a_r128_in_2]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_2]; [3:a]anul[a_r128_in_3]; [a_r128_in_3]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_3]; [4:a]anul[a_r128_in_4]; [a_r128_in_4]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_4]; [5:a]anul[a_r128_in_5]; [a_r128_in_5]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_5]; [6:a]anul[a_r128_in_6]; [a_r128_in_6]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_6]; [7:a]anul[a_r128_in_7]; [a_r128_in_7]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_7]; [8:a]anul[a_r128_in_8]; [a_r128_in_8]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_8]; [9:a]anul[a_r128_in_9]; [a_r128_in_9]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_9]; [10:a]anul[a_r128_in_10]; [a_r128_in_10]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_10]; [a_r128_in_fmt_0][a_r128_in_fmt_1][a_r128_in_fmt_2][a_r128_in_fmt_3][a_r128_in_fmt_4][a_r128_in_fmt_5][a_r128_in_fmt_6][a_r128_in_fmt_7][a_r128_in_fmt_8][a_r128_in_fmt_9][a_r128_in_fmt_10]concat=n=11:v=0:a=1[a_r128_in_concat]; [a_r128_in_concat]ebur128=framelog=verbose" -f null /dev/null
2019-05-07 14:17:05,044 ThreadPoolExecutor-0_1: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./10 - Vision Incision.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:05,220 ThreadPoolExecutor-0_0: Analyzing loudness of file './02 - Kool Roc Bass.opus'...
2019-05-07 14:17:05,220 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./02 - Kool Roc Bass.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:13,350 ThreadPoolExecutor-0_0: Analyzing loudness of file './04 - Blisters on My Brain.opus'...
2019-05-07 14:17:13,350 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./04 - Blisters on My Brain.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:16,117 ThreadPoolExecutor-0_1: Analyzing loudness of file './08 - Lazer Sheep Dip Funk.opus'...
2019-05-07 14:17:16,118 ThreadPoolExecutor-0_1: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./08 - Lazer Sheep Dip Funk.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:20,964 ThreadPoolExecutor-0_0: Analyzing loudness of file './11 - Nightime Story.opus'...
2019-05-07 14:17:20,964 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./11 - Nightime Story.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:23,673 ThreadPoolExecutor-0_1: Analyzing loudness of file './06 - I Used to Fall in Love.opus'...
2019-05-07 14:17:23,674 ThreadPoolExecutor-0_1: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./06 - I Used to Fall in Love.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:25,929 ThreadPoolExecutor-0_0: Analyzing loudness of file './07 - Battle Flag (feat. Pigeonhed).opus'...
2019-05-07 14:17:25,929 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./07 - Battle Flag (feat. Pigeonhed).opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:30,552 ThreadPoolExecutor-0_1: Analyzing loudness of file './09 - Will I Get Out of Jail?.opus'...
2019-05-07 14:17:30,552 ThreadPoolExecutor-0_1: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./09 - Will I Get Out of Jail?.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:32,688 ThreadPoolExecutor-0_0: Analyzing loudness of file './05 - How to Operate With a Blown Mind.opus'...
2019-05-07 14:17:32,688 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./05 - How to Operate With a Blown Mind.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:38,418 ThreadPoolExecutor-0_1: Analyzing loudness of file './01 - Warming Up the Brain Farm.opus'...
2019-05-07 14:17:38,418 ThreadPoolExecutor-0_1: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./01 - Warming Up the Brain Farm.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:40,724 ThreadPoolExecutor-0_0: Analyzing loudness of file './03 - Kasparov's Revenge.opus'...
2019-05-07 14:17:40,725 ThreadPoolExecutor-0_0: /usr/bin/ffmpeg -hide_banner -nostats -threads:0 1 -i "./03 - Kasparov's Revenge.opus" -filter_threads 1 -map a -filter:a ebur128=framelog=verbose -f null /dev/null
2019-05-07 14:17:46,007 MainThread: Failed to analyze files './10 - Vision Incision.opus', './02 - Kool Roc Bass.opus', './04 - Blisters on My Brain.opus', './08 - Lazer Sheep Dip Funk.opus', './11 - Nightime Story.opus', './06 - I Used to Fall in Love.opus', './07 - Battle Flag (feat. Pigeonhed).opus', './09 - Will I Get Out of Jail?.opus', './05 - How to Operate With a Blown Mind.opus', './01 - Warming Up the Brain Farm.opus', './03 - Kasparov's Revenge.opus': CalledProcessError Command '['/usr/bin/ffmpeg', '-hide_banner', '-nostats', '-threads:0', '1', '-i', './10 - Vision Incision.opus', '-threads:1', '1', '-i', './02 - Kool Roc Bass.opus', '-threads:2', '1', '-i', './04 - Blisters on My Brain.opus', '-threads:3', '1', '-i', './08 - Lazer Sheep Dip Funk.opus', '-threads:4', '1', '-i', './11 - Nightime Story.opus', '-threads:5', '1', '-i', './06 - I Used to Fall in Love.opus', '-threads:6', '1', '-i', './07 - Battle Flag (feat. Pigeonhed).opus', '-threads:7', '1', '-i', './09 - Will I Get Out of Jail?.opus', '-threads:8', '1', '-i', './05 - How to Operate With a Blown Mind.opus', '-threads:9', '1', '-i', './01 - Warming Up the Brain Farm.opus', '-threads:10', '1', '-i', "./03 - Kasparov's Revenge.opus", '-filter_threads', '1', '-map', 'a', '-filter_complex', '[0:a]anul[a_r128_in_0]; [a_r128_in_0]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_0]; [1:a]anul[a_r128_in_1]; [a_r128_in_1]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_1]; [2:a]anul[a_r128_in_2]; [a_r128_in_2]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_2]; [3:a]anul[a_r128_in_3]; [a_r128_in_3]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_3]; [4:a]anul[a_r128_in_4]; [a_r128_in_4]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_4]; [5:a]anul[a_r128_in_5]; [a_r128_in_5]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_5]; [6:a]anul[a_r128_in_6]; [a_r128_in_6]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_6]; [7:a]anul[a_r128_in_7]; [a_r128_in_7]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_7]; [8:a]anul[a_r128_in_8]; [a_r128_in_8]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_8]; [9:a]anul[a_r128_in_9]; [a_r128_in_9]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_9]; [10:a]anul[a_r128_in_10]; [a_r128_in_10]aformat=sample_fmts=s16:sample_rates=48000:channel_layouts=stereo,afifo[a_r128_in_fmt_10]; [a_r128_in_fmt_0][a_r128_in_fmt_1][a_r128_in_fmt_2][a_r128_in_fmt_3][a_r128_in_fmt_4][a_r128_in_fmt_5][a_r128_in_fmt_6][a_r128_in_fmt_7][a_r128_in_fmt_8][a_r128_in_fmt_9][a_r128_in_fmt_10]concat=n=11:v=0:a=1[a_r128_in_concat]; [a_r128_in_concat]ebur128=framelog=verbose', '-f', 'null', '/dev/null']' returned non-zero exit status 1.
2019-05-07 14:17:46,008 MainThread: File './10 - Vision Incision.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,008 MainThread: File './02 - Kool Roc Bass.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,008 MainThread: File './04 - Blisters on My Brain.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,008 MainThread: File './08 - Lazer Sheep Dip Funk.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,009 MainThread: File './11 - Nightime Story.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,009 MainThread: File './06 - I Used to Fall in Love.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,009 MainThread: File './07 - Battle Flag (feat. Pigeonhed).opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,009 MainThread: File './09 - Will I Get Out of Jail?.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,009 MainThread: File './05 - How to Operate With a Blown Mind.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,010 MainThread: File './01 - Warming Up the Brain Farm.opus': loudness = -22.9 LUFS, sample peak = -
2019-05-07 14:17:46,010 MainThread: File './03 - Kasparov's Revenge.opus': loudness = -23.0 LUFS, sample peak = -
2019-05-07 14:17:46,010 MainThread: Album '.': loudness = SKIPPED, sample peak = SKIPPED
2019-05-07 14:17:46,010 MainThread: Tagging file './10 - Vision Incision.opus'
2019-05-07 14:17:46,013 MainThread: Tagging file './02 - Kool Roc Bass.opus'
2019-05-07 14:17:46,015 MainThread: Tagging file './04 - Blisters on My Brain.opus'
2019-05-07 14:17:46,017 MainThread: Tagging file './08 - Lazer Sheep Dip Funk.opus'
2019-05-07 14:17:46,039 MainThread: Tagging file './11 - Nightime Story.opus'
2019-05-07 14:17:46,047 MainThread: Tagging file './06 - I Used to Fall in Love.opus'
2019-05-07 14:17:46,052 MainThread: Tagging file './07 - Battle Flag (feat. Pigeonhed).opus'
2019-05-07 14:17:46,064 MainThread: Tagging file './09 - Will I Get Out of Jail?.opus'
2019-05-07 14:17:46,081 MainThread: Tagging file './05 - How to Operate With a Blown Mind.opus'
2019-05-07 14:17:46,112 MainThread: Tagging file './01 - Warming Up the Brain Farm.opus'
2019-05-07 14:17:46,118 MainThread: Tagging file './03 - Kasparov's Revenge.opus'
In generating the latter I've noticed another problem: despite the failure r128gain is producing an exit code of 0
. I'd expect it to be something else so the failure can be detected from a calling script.
OK I have reproduced this, really stupid bug, I will provide a fix soon.
The return code of 0 is because only the album gain scan fails, the file are properly scanned and tagged with track gain.
Awesome, much appreciated.
WRT the return code - I get that the operation is partially successful, but after a user has explicitly specified --album-gain
on the command line I'd say its absence counts as failure.
For the return code, you have to consider that in recursive mode, user might scan hundreds of albums, with sometimes corrupt files (that was the case for a previous issue).
But I actually agree with you, I think the return code should be non zero in that case (I have created #10 to remind me to fix this).
Good point. Maybe a --strict
mode is the best way to go - it'll satisfy tagging absolutists like me without breaking the recursive behaviour for everyone else.
Anyhow thanks for the fix and thanks for r128gain itself - it's a great tool.
It appears something in r128gain's opus handling has broken between release 0.7.1 and the latest. For example the command
r128gain -r -a -o .
previously ran without error on a directory of .opus files (freshly written by ffmpeg+libopus) in 0.7.1, but on a fresh install I see the following:Pinning my local install to
r128gain==0.7.1
is a workaround.