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);
반응형

ffmpeg 는 미디어의 확장자명을 변환해줄수 있는 소프트웨어이다.

 

ex)

avi to mp4 

mp4 to flu ..

등 동영상을 다룬다면 금방 들을수있는 소프트웨어 이름이다.

 

또하나 들을수있는 말이 ffprobe 인데

간단히 말하면

ffmpeg고 미디어의 확장자명을 변환해주고

ffprobe는 미디어의 정보를 확인할수있다.

 

 

나는 영상을 인코딩하여서 내가 원하는 영상 코덱으로 포맷을 하기 위한 프로그램을 만들려한다.

 

기본 설치 방법.

wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

 

자 설치 끝났고 압축 풀어야겠죠?

 tar xf ffmpeg-release-amd64-static.tar.xz

풀린것 확인.

자 파일 들어가서 

안에 뭐뭐있나 확인하기

안에있는 파일들을 모두

/usr/bin 으로 카피 시킨다.

cp -a ffmpeg ffprobe /usr/bin/

자 그리고 어느 위치에서든 한번 ffmpeg을 실행시켜보자

정상적으로 설치된것을볼수있다.

자. 인제 시작이다.

반응형

+ Recent posts