
기술문서
>PHP
PHP 또는 웹사이트에서 동영상 해상도 확인하는 방법
![]() |
평점 | 10.0 | 라이센스 | free |
---|---|---|---|---|
사용자평점 | 10.0 | 운영체제 | ||
다운로드 | 11 | 파일크기 | 0 | |
제작사 | LUZENSOFT | 등록일 | 2025-06-05 15:56:34 | |
조회수 | 34 |
FFmpeg 사용 (가장 강력하고 정확한 방법): FFmpeg은 오디오/비디오 파일을 처리하는 데 가장 강력하고 널리 사용되는 오픈 소스 도구입니다. 서버에 FFmpeg이 설치되어 있다면, PHP에서 exec() 함수를 통해 FFmpeg 명령어를 실행하여 동영상 메타데이터를 추출할 수 있습니다.
서버 환경: FFmpeg이 서버에 설치되어 있어야 합니다.
PHP exec() 함수: PHP에서 외부 명령어를 실행할 수 있어야 합니다 (보안상 비활성화된 경우가 많음).
FFmpeg 명령어 예시:이 명령어를 실행하면 동영상 파일의 모든 정보가 터미널에 출력되고, 여기서 해상도(예: 1920x1080) 정보를 파싱할 수 있습니다.PHP
<?php function getVideoDimensionsFFmpeg(string $filePath): ?array { if (!file_exists($filePath)) { return null; } // FFmpeg 경로를 정확히 지정하거나 PATH 환경 변수에 등록되어 있어야 합니다. // Windows: 'ffmpeg -i "' . $filePath . '" -hide_banner' // Linux/macOS: 'ffmpeg -i ' . escapeshellarg($filePath) . ' -hide_banner' $command = 'ffmpeg -i ' . escapeshellarg($filePath) . ' -hide_banner'; $output = []; $returnVar = 0; // exec 함수를 사용하여 FFmpeg 명령 실행 및 출력 캡처 exec($command . ' 2>&1', $output, $returnVar); if ($returnVar !== 0) { // FFmpeg 실행에 오류 발생 // error_log("FFmpeg error for file: " . $filePath . " Output: " . implode("n", $output)); return null; } // 출력에서 해상도 정보 파싱 $dimensions = null; foreach ($output as $line) { // 'Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9]' if (preg_match('/Video:.*?, (d+)x(d+)/', $line, $matches)) { $dimensions = [ 'width' => (int)$matches[1], 'height' => (int)$matches[2] ]; break; // 해상도를 찾았으면 루프 종료 } } return $dimensions; } $mp4FilePath = 'path/to/your/video.mp4'; // 실제 MP4 파일 경로 $dimensions = getVideoDimensionsFFmpeg($mp4FilePath); if ($dimensions) { echo "동영상 해상도: " . $dimensions['width'] . "x" . $dimensions['height'] . PHP_EOL; } else { echo "동영상 해상도를 가져올 수 없거나 파일이 유효하지 않습니다." . PHP_EOL; } ?>
주의: escapeshellarg() 함수는 보안을 위해 사용자 입력으로 파일 경로를 사용할 경우 필수적입니다.
PHP 코드 예시:
Bash
ffmpeg -i input.mp4 -hide_banner
getID3() 라이브러리 사용: getID3()는 MP3, MP4 등 다양한 미디어 파일의 ID3 태그 및 기타 메타데이터를 PHP에서 읽을 수 있게 해주는 오픈 소스 PHP 라이브러리입니다. FFmpeg을 설치하기 어려운 공유 호스팅 환경 등에서 유용하게 사용될 수 있습니다.
설치: Composer를 통해 설치할 수 있습니다: composer require james-heinrich/getid3
사용법:PHP
<?php require_once 'vendor/autoload.php'; // Composer autoload function getVideoDimensionsGetID3(string $filePath): ?array { if (!file_exists($filePath)) { return null; } $getID3 = new getID3(); $fileInfo = $getID3->analyze($filePath); if (isset($fileInfo['video']['resolution_x']) && isset($fileInfo['video']['resolution_y'])) { return [ 'width' => $fileInfo['video']['resolution_x'], 'height' => $fileInfo['video']['resolution_y'] ]; } return null; } $mp4FilePath = 'path/to/your/video.mp4'; // 실제 MP4 파일 경로 $dimensions = getVideoDimensionsGetID3($mp4FilePath); if ($dimensions) { echo "동영상 해상도: " . $dimensions['width'] . "x" . $dimensions['height'] . PHP_EOL; } else { echo "동영상 해상도를 가져올 수 없거나 파일이 유효하지 않습니다." . PHP_EOL; } ?>
장점: PHP로만 구현되므로 서버 환경에 대한 제약이 적습니다.
단점: 매우 큰 파일이나 손상된 파일에서는 성능 문제 또는 오류가 발생할 수 있습니다. FFmpeg만큼 모든 코덱과 포맷에 완벽하게 대응하지 못할 수도 있습니다.
Javascript (클라이언트 측)에서 확인 후 PHP로 전송: 만약 클라이언트(브라우저)에서 파일을 업로드할 때 해상도를 확인하고 싶다면, JavaScript를 사용하여 <video> 요소를 통해 해상도를 얻은 후, AJAX 등으로 PHP 스크립트에 전송하는 방법도 있습니다.
장점: 서버 부하를 줄이고, FFmpeg/getID3 설치가 필요 없습니다.
단점: 파일이 서버에 업로드되기 전에만 가능하며, 서버 측에서 신뢰할 수 있는 검증이 필요한 경우에는 적합하지 않습니다.
Javascript (클라이언트 측)에서 확인 후 PHP 로 전송하기 > 적용 방법 자세히 보기
적용된 페이지 확인 하기 : https://pds.luzensoft.com/detailview.php?fno=53178