업로드 된 비디오 파일을 FLV로 즉시 변환하는 PHP 스크립트를 작성하고 있지만 사용자가 FFmpeg를 서버에 설치 한 경우에만 스크립트의 해당 부분을 실행하고 싶습니다.FFmpeg 설치 및 버전 감지
미리 검색 할 방법이 있습니까? 아마도 FFmpeg 명령을 실행하고 "명령을 찾을 수 없습니까?"
업로드 된 비디오 파일을 FLV로 즉시 변환하는 PHP 스크립트를 작성하고 있지만 사용자가 FFmpeg를 서버에 설치 한 경우에만 스크립트의 해당 부분을 실행하고 싶습니다.FFmpeg 설치 및 버전 감지
미리 검색 할 방법이 있습니까? 아마도 FFmpeg 명령을 실행하고 "명령을 찾을 수 없습니까?"
당신은 자신의 질문에 대답했다. 당신은 명령을 실행할 수있다. 그리고 그것이 네가 돌아 오지 않았다면 당신은 그것이 설치되어 있지 않다는 것을 알게 될 것이다. 또는 가능한 ffmpeg 바이너리에 대해 사용자가 설정 한 기본 경로를 확인할 수있다.
당신이 시도를 줄 수 :
뿐만 아니라 다른 기능을위한 재사용function commandExists($command) {
$command = escapeshellarg($command);
$exists = exec("man ".$command,$out);
return sizeof($out);
}
if (commandExists("ffmpeg")>0) {
// FFMPeg Exists on server
} else {
// No FFMPeg
}
- 보안 문제의 확실하지 않다.
이것은 명령을 확인하는 아주 나쁜 방법입니다. 설치된 매뉴얼 페이지는 프로그램이 설치되어 있다는 것을 의미하지 않으며 반대의 경우도 마찬가지입니다. 실행 파일 자체를 확인하는 것으로 충분합니다. – viraptor
충분히 생각해 보면, 처음 생각해 보았던 서버에서 작업 한 첫 번째 아이디어였습니다. OP에서도 잘 작동하는지 보았습니다. – StudioKraft
exec()
함수의 세 번째 매개 변수는 실행 된 프로그램의 반환 값입니다. 다음과 같이 사용하십시오 :
exec($cmd, $output, $returnvalue);
if ($returnvalue == 127) {
# not available
}
else {
#available
}
내 우분투 상자에서 작동합니다.
시도 :
$ffmpeg = trim(shell_exec('which ffmpeg')); // or better yet:
$ffmpeg = trim(shell_exec('type -P ffmpeg'));
이 그렇지 않으면 당신이 실제는 FFmpeg 호출에 사용할 수있는 실행 파일의 절대 경로 개최, 비어는 FFmpeg를 사용할 수없는 돌아 오는 경우
if (empty($ffmpeg))
{
die('ffmpeg not available');
}
shell_exec($ffmpeg . ' -i ...');
안녕하세요.이 문제를 검색해 본 결과이 코드로 ffmpeg 버전을 얻을 수 있습니다 : echo (shell_exec ('/ usr/bin/ffmpeg -version'));
감사합니다. PHP에서 exec() 명령의 반환을 평가할 수있는 방법을 보여줄 수 있습니까? 명령이 작동하지 않으면 PHP는 false를 반환 할만큼 똑똑합니까? 그것은 나를 놀라게 할 것이다. – Aaron
샘플 : if (strpos ('ffmpeg --help', 'ffmpeg')> -1) echo 'Installed!'; –
@ Cd-MaN : 그게 ** 비슷한 메시지를 출력하지 않는 한, 패키지 ffmpeg가 설치되지 않았다면 ... **를 실행하여 설치할 수 있습니다. 또한,'strpos'는 Javascript와 동등한 기능을하지 않으므로'! == false'에 대해서 테스트해야합니다. –