Files
racalmas/tools/audio-upload-hooks/set-loudness-duration.pl
Milan 2db84415bb config: add audio-upload-hooks
Hooks can be used to automate the process of updating database columns
when new audio files are uploaded.  A hook command reads the path of an
audio file and output a list of database columns to be updated with
their respective values.  Currently, the only supported database tables
are calcms_events and calcms_audio_recordings.  Some examples are
included
2023-03-24 23:01:05 +01:00

30 lines
756 B
Perl
Executable File

#!/usr/bin/perl
use warnings;
use strict;
use Symbol 'gensym';
use IPC::Open3 qw(open3);
$| = 1;
# measure duration and rms
# requires sox and libsox-fmt-all
die unless $ARGV[0];
my $pid
= open3(undef, undef, my $err = gensym(), "sox", $ARGV[0], "-n", "stats");
while (defined(my $line = <$err>)) {
my @fields = split /\s+/, $line;
if ($line =~ /^RMS lev dB/) {
print "calcms_audio_recordings.rmsLeft = "
. int($fields[3] + 0.5) . "\n";
print "calcms_audio_recordings.rmsRight = "
. int($fields[4] + 0.5) . "\n";
} elsif ($line =~ /^Length\ss/) {
print "calcms_audio_recordings.audioDuration = "
. int($fields[2] + 0.5)
. "\n";
}
}
waitpid($pid, 0);
die if $?;