Audio-ConvTools

 view release on metacpan or  search on metacpan

lib/Audio/ConvTools.pm  view on Meta::CPAN

################################################################################
# Convert audiofiles from one format to another (ogg, mp3 or wav)              #
#                                                                              #
# Copyright (C) 2006 Michael Hooreman <michael_AT_mijoweb_DOT_net>             #
################################################################################

#$Id: ConvTools.pm,v 1.3 2006-10-28 10:24:23 michael Exp $

=head1 NAME

Audio::ConvTools - API to convert audio files from/to mp3 ogg and wav

=head1 SYNOPSIS

 use Audio::ConvTools;
 use Audio::ConvTools qw/:DEFAULT :Tmp :Log/;

 $status = ogg2mp3('file.ogg');
 $status = ogg2wav('file.ogg');
 $status = ogg2wav('in.ogg', 'out.wav');
 $status = mp32ogg('file.mp3');
 $status = mp32wav('file.mp3');
 $status = mp32wav('in.mp3', 'out.wav');
 $status = wav2ogg('file.wav');
 $status = wav2ogg('in.wav', 'out.ogg');
 $status = wav2mp3('file.wav');
 $status = wav2mp3('in.wav', 'out.mp3');

 Audio::ConvTools::logMsg('This is a log message');
 Audio::ConvTools::errMsg('This is an error message');

 $tmp = Audio::ConvTools::getTmpFile('.wav');
 Audio::ConvTools::destroyTmpFile(\$tmp);

=head2 OBJECT INTERFACE

 No object interface is defined

=head1 DESCRIPTION

C<Audio::ConvTools> provides miscellaneous tools to convert audio files between
Ogg Vorbis, MPEG III and Wav files. This is a function interface only.

By default, all the conversions functions are exported. You can also export
temporary file usage tools with the :Tmp tag, and logging tools with the :Log
tag.

Moreover, two scipts are provided with this package:

=over

=item *

audiocdmaker   To brun audio CD

=item *

audioconv      To convert audio files

=back

=head2 PROGRAMS USED

To do the conversions, this module uses the following linux programs:

=over

lib/Audio/ConvTools.pm  view on Meta::CPAN

	$outFile = "$1.wav" unless defined $outFile;
	$status = system(
		"mpg321 -w " . shell_quote($outFile) . " " . shell_quote($inFile)
	);
	return ($status==0);
}

sub ogg2wav($;$)
{
	my $inFile = shift;
	my $outFile = shift;
	my $status;
	($inFile =~ /^(.*)\.[Oo][Gg][Gg]$/) or do {
		errMsg("$inFile is not an ogg vorbis file");
		return 0;
	};
	$outFile = "$1.wav" unless defined $outFile;
	$status = system(
		"oggdec " . shell_quote($inFile) . " -o " . shell_quote($outFile)
	);
	return ($status==0);
}

sub wav2ogg($;$)
{
	my $inFile = shift;
	my $outFile = shift;
	my $status;
	($inFile =~ /^(.*)\.[Ww][Aa][Vv]$/) or do {
		errMsg("$inFile is not an wav file");
		return 0;
	};
	$outFile = "$1.ogg" unless defined $outFile;
	$status = system(
		"oggenc -q 10 -o " . shell_quote($outFile) . " " . shell_quote($inFile)
	);
	return ($status==0);
}

sub wav2mp3($;$)
{
	my $inFile = shift;
	my $outFile = shift;
	my $status;
	($inFile =~ /^(.*)\.[Ww][Aa][Vv]$/) or do {
		errMsg("$inFile is not an wav file");
		return 0;
	};
	$outFile = "$1.mp3" unless defined $outFile;
	$status = system(
		"lame -h " . shell_quote($inFile) . " " . shell_quote($outFile)
	);
	return ($status==0);
}

1;

__END__

#$Log: ConvTools.pm,v $
#Revision 1.3  2006-10-28 10:24:23  michael
#Updated my email address.
#Changed to version 0.08
#
#Revision 1.2  2006-10-28 10:12:45  michael
#Require File::Temp version 0.17
#New version 0.7
#
#Revision 1.1  2006-10-28 10:03:45  michael
#Added loss ConvTools.pm to the repos.
#
#Revision 1.1  2006/08/18 12:50:12  mhoo
#module is now Audio::ConvTool
#switched to version 0.06
#
#Revision 1.1  2006/08/18 12:36:22  mhoo
#AudioConvTools becomes Audio::ConvTools
#switched to v0.4
#
#Revision 1.6  2006/08/18 12:28:28  mhoo
#AudioConvTools becomes Audio::ConvTools
#switched to v0.4
#
#Revision 1.5  2006/08/18 11:59:19  mhoo
#Adapted MANIFEST (INSTALL is lost)
#Swith to version 0.03
#
#Revision 1.4  2006/08/18 11:56:35  mhoo
#Removed INSTALL (not needed)
#Switched to version 0.02
#
#Revision 1.3  2006/08/18 11:52:43  mhoo
#Tagged to version 0.01
#
#Revision 1.2  2006/08/18 11:49:12  mhoo
#Adapted manifest
#Tagging to version 0.9
#
#Revision 1.1.1.2  2006/08/18 11:46:27  mhoo
#Version 0.9 Ready for CPAN
#



( run in 1.721 second using v1.01-cache-2.11-cpan-39bf76dae61 )