본문 바로가기
이과/FFMPEG

[FFMPEG] ffprobe에 나오는 동영상 정보들 php 변수로 만들기.

by 코딩초밥 2022. 4. 29.
반응형

 ffprobe -show_streams [테스트영상]

라고 치면 동영상 정보들이 쭈루루룰루루루룩 나온다..

[root@centos-s-1vcpu-1gb-sfo3-01 file]# ffprobe -show_streams M_20080305000300000047731701.flv

나는 폴더 안에있는 영상들을 하나하나씩 다 읽어들여서 비교한다음에 인코딩을 할건지 안할건지 정할거기떄문에...

결국.. 이 ffprobe 결과값을 변수값에 넣던가 해야한다.. 흐엉..

 

ffprobe 로 일반 동영상 정보를 확인하면

[STREAM] 값 아래로

index=0 비디오 스팩정보 ,

index=1 audio 스팩정보

 

이렇게 두개의 대전재값으로 정보들이 보여진다.

이 모든값을 내가 손으로 꽉 쥐고싶다.

 

시나리오

 

1.[STREAM] 아래에 있는 정보 값만 먼저 잘라낸다.

2.index=0 ,1 로 오디오와 비디오 정보값만 잘라낸다

3.정규식으로 값만 뽑아 본다

4.배열에 값을 넣는다.

 

 

1.[STREAM] 아래에 있는 정보 값만 먼저 잘라낸다.

$alldata = substr( $output, strpos($output,"[STREAM]"), -1);

2.index=0 ,1 로 오디오와 비디오 정보값만 잘라낸다

$a=substr( $alldata, strpos($alldata,"index=0"), strpos($alldata,"[/STREAM]"));
$b=substr( $alldata, strpos($alldata,"index=1"), -1);

 

3.정규식으로 값만 뽑아 본다

4.배열에 값을 넣는다.

preg_match_all('/(.*)=(.*)/i', $a, $matches);
$video_info = [];
if(!empty($matches)) {
    foreach($matches[1] as $k => $v) {
        $video_info[$v] = $matches[2][$k];
    }
}

preg_match_all('/(.*)=(.*)/i', $b, $matches);
$video_info2 = [];
if(!empty($matches)) {
    foreach($matches[1] as $k => $v) {
        $video_info2[$v] = $matches[2][$k];
    }
}

 

 

실행값

print_r($video_info);
print_r($video_info2);

video값.

audio값.

풀코드

$output= shell_exec('/usr/bin/ffprobe -show_streams M_20080305000300000047731701.flv 2>&1;');
//
//STREAM 기준으로 자르기
$alldata = substr( $output, strpos($output,"[STREAM]"), -1);


$a=substr( $alldata, strpos($alldata,"index=0"), strpos($alldata,"[/STREAM]"));
$b=substr( $alldata, strpos($alldata,"index=1"), -1);

preg_match_all('/(.*)=(.*)/i', $a, $matches);
$video_info = [];
if(!empty($matches)) {
    foreach($matches[1] as $k => $v) {
        $video_info[$v] = $matches[2][$k];
    }
}

preg_match_all('/(.*)=(.*)/i', $b, $matches);
$video_info2 = [];
if(!empty($matches)) {
    foreach($matches[1] as $k => $v) {
        $video_info2[$v] = $matches[2][$k];
    }
}
print_r($video_info);
print_r($video_info2);
반응형

댓글