Level the audio

$ pconv talk.mp4 upload.mp4 --loudness youtubeupload.mp4loudness before: -31.07 LUFS, LRA 0.10 LU, true peak -19.56 dBTPloudness after: -14.21 LUFS, LRA 0.20 LU, true peak -2.58 dBTP (linear, target -14 LUFS, ceiling -2 dBTP)--loudness youtube levels the audio to -14 LUFS integrated under a -2 dBTP true-peak ceiling, as AAC 320k. pconv measures the source in a first EBU R128 pass (ffmpeg’s loudnorm), then applies the gain in a second, linear where the true peak allows (dynamic otherwise), and prints the loudness before and after. The last line says which mode it used.
Any target
Section titled “Any target”--loudness takes any target from -70 to -5 LUFS. --true-peak sets the ceiling, -1 dBTP by default:
pconv talk.mp4 podcast.mp4 --loudness -16 --true-peak -1.5The video stays as it is
Section titled “The video stays as it is”With --loudness (or --audio-bitrate) and no --profile, --size, --fps, --crf, --qp or --tune, the video is copied untouched where the container takes its codec: only the audio is re-encoded. Add any video option and the video is encoded too, with the colour handled as in deliveries.
A source with no audio is refused with exit 1, since there is nothing to level.
In JSON
Section titled “In JSON”With --json, the source’s loudness is in source.loudness, the result’s in files[0].loudness, and the target and mode in params.loudness; see the formats reference.