PHP LAME is a php wrapper for LAME MP3 encoder. It provides convenient interface to encode wav file(s) into mp3.
In order to use this library you will need to download & install LAME. Read here how to install it.
Install PHP LAME wrapper using Composer:
{
"require": {
"b-b3rn4rd/phplame": "dev-master"
}
}
<?php
require 'vendor/autoload.php';
use Lame\Lame;
use Lame\Settings;
// encoding type
$encoding = new Settings\Encoding\Preset();
$encoding->setType(Settings\Encoding\Preset::TYPE_STANDARD);
// lame settings
$settings = new Settings\Settings($encoding);
// lame wrapper
$lame = new Lame('/usr/bin/lame', $settings);
try {
$lame->encode("/home/bernard/Music/B.W. Souls - Marvin's Groove.wav",
"/home/bernard/Music/mp3/B.W. Souls - Marvin's Groove.mp3");
} catch(\RuntimeException $e) {
var_dump($e->getMessage());
}
The example above executed following command: /usr/bin/lame --preset standard '/home/bernard/Music/B.W. Souls - Marvin'\\''s Groove.wav' '/home/bernard/Music/mp3/B.W. Souls - Marvin'\\''s Groove.mp3'
<?php
require 'vendor/autoload.php';
use Lame\Lame;
use Lame\Settings;
// encoding type
$encoding = new Settings\Encoding\VBR();
$encoding->setMinBitrate(320);
// lame settings
$settings = new Settings\Settings($encoding);
$settings->setAlgorithmQuality(0);
// lame wrapper
$lame = new Lame('/usr/bin/lame', $settings);
try {
$lame->encode("/home/bernard/Music/*.wav", "/home/bernard/Music/mp3/");
} catch(\RuntimeException $e) {
var_dump($e->getMessage());
}
Lame command was executed for each file found in $inputfile
path with following options: /usr/bin/lame -q 0 -b 320 '/home/bernard/Music/B.W. Souls - Marvin'\\''s Groove.wav' '/home/bernard/Music/mp3/B.W. Souls - Marvin'\\''s Groove.mp3'
etc...
<?php
require 'vendor/autoload.php';
use Lame\Lame;
use Lame\Settings;
// encoding type
$encoding = new Settings\Encoding\NullEncoding();
// lame settings
$settings = new Settings\Settings($encoding, array(
'-V' => 0,
'--vbr-new' => true,
'-q' => 0,
'-m' => 's'
));
// lame wrapper
$lame = new Lame('/usr/bin/lame', $settings);
try {
$lame->encode("/home/bernard/Music/Benny Gordon - Give A Damn.wav",
"/home/bernard/Music/mp3/", function($inputfile, $outputfile) {
unlink($inputfile);
});
} catch(\RuntimeException $e) {
var_dump($e->getMessage());
}
This example uses optional callback to remove $inputfile
after it was encoded. Callback is executed each time after a file has been encoded.
PHP LAME provides following encoding interfaces:
- \Lame\Settings\Bitrate\ABR — Average Bitrate Encoding (ABR) related options
- \Lame\Settings\Bitrate\CBR — Constant Bitrate Encoding (CBR) related options
- \Lame\Settings\Encoding\VBR — \Lame\Settings\Encoding\VBR related options
- \Lame\Settings\Encoding\Preset — Preconfigured settings
- \Lame\Settings\Encoding\NullEncoding — no encoding