2013-07-28 2 views
4

PHP 스크립트를 사용하여 MP3로 변환하려는 WAV 데이터가 있습니다. WAV 파일은 스크립트에서 시작되었으므로 파일로 시작하지 않습니다.PHP에서 LAME을 사용하여 WAV를 MP3로 변환

나는 같은 것을 실행할 수 있습니다

exec("lame --cbr -b 32k in.wav out.mp3"); 

을하지만 이것은 내가 먼저, 디스크에 in.wav 쓰기 디스크에서 out.mp3 읽은 후 나는 완료있을 때까지 청소하는 것이 필요합니다. 나는 그렇게하지 않는 것을 좋아한다. 대신 wav 파일을 $ wav에 저장했습니다. LAME을 통해 실행하면 출력 된 데이터가 $ mp3에 저장됩니다.

필자는 FFMPEG PHP 라이브러리에 대한 참조를 보았지만 가능하면이 라이브러리를 추가로 설치하지 않아도됩니다.

+2

@Krister Andersson : 제목을 편집 해 주셔서 감사합니다. WAV에서 PHP로 변환하면 어색할 것입니다 :-). –

답변

7

proc_open()이 내가 찾고있는 것으로 보입니다. 여기에 코드의 조각은 내가 쓴과 내가 찾던 정확히 수행하는 테스트입니다 :

  • $ 웨이브는 변환 할 수있는 원래의 WAV 데이터는 다음과 같습니다

    .

  • $ mp3 파일은 변환 된 MP3 데이터를 보유
$descriptorspec = array(
    0 => array("pipe", "r"), 
    1 => array("pipe", "w"), 
    2 => array("file", "/dev/null", "w") 
); 

$process = proc_open("/usr/bin/lame --cbr -b 32k - -", $descriptorspec, $pipes); 

fwrite($pipes[0], $wav); 
fclose($pipes[0]); 

$mp3 = stream_get_contents($pipes[1]); 
fclose($pipes[1]); 

proc_close($process); 

최종 출력 된 데이터가 내가 /usr/bin/lame --cbr -b 32k in.wav out.mp3를 실행 한 경우와 동일합니다.

관련 문제