You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
2.6 KiB

#!/usr/bin/php -q
<?php
error_reporting(E_ERROR);
ini_set('display_errors', 0);
/*
* Inclui fun<EFBFBD>oes gen<EFBFBD>ricas.
*/
include("util/constantes.php");
include("util/util.php");
include("util/cnvrtFunctions.php");
try {
/*
* Saida dos comandos para log.
*/
$cmdOut = '';
$msgOut = '';
$stOut = '';
/*
* Carrega os parametros.
*/
list($src, $dst, $type, $prcName, $pathLog) = CnvrtDecodeData($argv[1], false);
/*
* Registra o inicio do script;
*/
CnvrtLog(sprintf("Script: %s Origem: %s Destino: %s Tipo: %s IPC: %s", 'cnvrtAudio.php', $src, $dst, $type, $prcName));
/*
* Cria arquivo com o pid do processo corrente.
*/
_CnvrtRegPid($prcName);
if (!file_exists($src)) {
GeraExcept($msgOut = "O orquivo de origem n<EFBFBD>o existe!");
}
if (!filesize($src)) {
GeraExcept($msgOut = "O arquivo n<EFBFBD>o possui dados ou <EFBFBD> inv<EFBFBD>lido!");
}
/*
* Seleciona a funcao para conversao a partir do parametro type.
*/
switch ($type) {
case CNVRT_WAV_MP3:
_CnvrtWavToMp3();
break;
case CNVRT_WAV_ULAW:
_CnvrtWavToUlaw();
break;
case CNVRT_MP3_ULAW:
_CnvrtMp3ToUlaw();
break;
default:
break;
}
$msgSys = error_get_last();
CnvrtLog(sprintf("Conversao Audio: %s msg: %s %s cmd: %s [ %s ]", date("Y:m:i"), $msg, ($stOut ? '' : "MsgSis: " . $msgSys["message"]), $cmdOut, ($stOut ? 'OK' : 'ER')));
} catch (Exception $ex) {
CnvrtLog($ex->getMessage());
_CnvrtWirteData(_CnvrtPrepareData(0, $ex->getMessage()), $prcName, $dst);
}
function _CnvrtWavToMp3() {
global $src, $dst, $cmdOut;
ExecAudio($cmdOut = sprintf('ffmpeg -y -loglevel quiet -i %s -acodec libmp3lame %s', $src, $dst));
}
function _CnvrtWavToUlaw() {
global $src, $dst, $cmdOut;
ExecAudio($cmdOut = sprintf('ffmpeg -y -loglevel quiet -i %s -af "highpass=f=300, lowpass=f=3400" -ar 8000 -ac 1 -ab 64k -f mulaw %s', $src, $dst));
}
function _CnvrtMp3ToUlaw() {
global $src, $dst, $cmdOut;
ExecAudio($cmdOut = sprintf('ffmpeg -y -loglevel quiet -i %s -ar 8000 -ac 1 -ab 64 -f mulaw %s', $src, $dst));
}
function ExecAudio($cmd) {
global $prcName, $dst, $cmdOut, $msgOut, $stOut;
$out = '';
$ret = '';
$stOut = true;
exec($cmd, $out, $ret);
$data = _CnvrtPrepareData(1, $msgOut = 'Arquivo convertido com sucesso!');
if (!file_exists($dst)) {
$data = _CnvrtPrepareData(0, $msgOut = "Erro ao converter arquivo!", $out, $ret);
$stOut = false;
}
_CnvrtWirteData($data, $prcName, $dst);
}