저는 Sox (사운드 교환) 라이브러리를 사용하여 .wav 파일을 .flac로 변환하고 있습니다.txt 파일의 줄만큼 exec() 명령을 실행하십시오.
$Brus:~ pum$ sox outputFolder/file/file.000.wav flac/file.000.flac
및 파일 file.000.flac 바르게 FLAC 폴더로 변환되었다 내가 터미널을 사용하는 경우 , 그것은 잘 작동합니다. 내 스크립트 내부 또한
, 내가 실행하는 경우 :
exec('sox/sox outputFolder/file/file.000.wav flac/file.000.flac');
변환이 잘 작동합니다.
내 문제는 지금 파일 배치를 변환해야한다는 것입니다. 변환 할 수있는 파일 목록 .wav (listWav.txt)가있는 txt 파일을 만들고 "exec()"명령을 "listWav.txt"에 파일 이름이있는 줄이있는만큼 실행하고 싶습니다. "파일.
file.000.flac
file.001.flac
이것은 내가 실행하려고 쓴 코드 "간부를()"명령 등은 다음과 같습니다
outputFiles/file/file.000.wav
outputFiles/file/file.001.wav
이것은 listFlac.txt 파일은 다음과 같습니다
이
은 listWav.txt 파일입니다 설명 ://read all txt files content
$file2 = fopen("listFlac.txt","r");
$file3 = fopen("listWav.txt", "r");
//loop the file and read it line by line
while(! feof($file2) && ! feof($file3)){
$tt = fgets($file2);
$tt2 = fgets($file3);
//run sox conversion
exec('sox/sox' . ' ' . $tt2 . ' ' . 'flac/' . $tt);
}
fclose($file2);
fclose($file3);
난 print_r의 경우 ('삭스/삭스' '' 'FLAC/"$ 고작.'$의 TT2... '.); 그래서
sox/sox outputFiles/file/file.000.wav flac/file.000.flac sox/sox outputFiles/file/file.001.wav flac/file.001.flac
의 루프 "간부()"명령 "파일"listWav.txt "의 선으로 여러 번 실행했지만, 그것은 단지 때문에 제대로 작동하지 않습니다 :이 결과입니다 file.001.flac "이 생성되었으므로 while 루프는"exec() "가"listWav.txt "파일의 끝 행만 가져 와서 실행하도록 허용합니다.
누구든지 내 스크립트에서 "exec()"를 실행하여 목록에있는 모든 파일의 횟수를 편집해야한다는 것을 알고 있습니까?
EDIT : 나는이 방법으로 해결했다. 나는 2 개로 나누어서 중첩하면서 2 개의 동등한 "exec()"명령을 호출했다. 코드는 우아하지 않을 수 있지만 내 목적을 위해 작동합니다.
while(! feof($file2)){
$tt = fgets($file2);
while (!feof($file3)) {
$tt2 = fgets($file3);
exec('sox/sox' . ' ' . $tt2 . ' ' . 'flac/' . $tt);
}
exec('sox/sox' . ' ' . $tt2 . ' ' . 'flac/' . $tt);
}
답장을 보내 주셔서 감사합니다. 내 프로젝트의 다른 부분에서 코드를 사용하겠습니다. 내 질문에 대해, 나 혼자서 해결하고 솔루션을 게시했습니다. – Bebbolin