PHP & Others

동영상을 올렸을 경우 이미지 추출(ffmpeg, ffmpeg-php 등 설치되어 있다고 가정)

컨텐츠 정보

본문

 icon_link.gif http://www.boramchan.co.kr/bbs/board.php?bo_table=tiptech&wr_id=43&pag… [156]
# 동영상을 올렸을 경우 이미지 추출(ffmpeg, ffmpeg-php 등 설치되어 있다고 가정)

. 동영상파일에서 한장면을 jpg로 추출하는 부분이며 별도 DB에 저장하지 않고 올린 동영상
  파일명뒤에 .jpg 확장자로 저장
. write_update.php 에서 190번째 줄 정도에 아래를 추가

// 올리는 동영상 파일에서 jpg 추출 시작     
if (preg_match("/\.($config[cf_movie_extension])$/i", $dest_file)) { 
$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
//$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;
$extension_fullname = "./" . $extension_soname;

if (!extension_loaded($extension)) {
//    dl($extension_soname) or die("Can't load extension $extension_fullname\n");
alert("파일을 변환할 수 없습니다.");
}

$movie_name = $dest_file;
$movie = new ffmpeg_movie("./".$dest_file, false);
$frame = $movie->getFrame(1);
imagejpeg($frame->toGDImage(), "./".$dest_file.".jpg");
}
// 올리는 동영상 파일에서 jpg 추출 끝

. 삭제시에서 .jpg 파일 삭제하게끔 추가(delete.php나 delete_all.php 에..)
@unlink("$g4[path]/data/file/$bo_table/$row2[bf_file].jpg");

위와 같이 view 나 list 시에 그 jpg파일만 보이게 해도 되겠죠...

위와 같이 한것은 동영상을 올릴때  별도의 썸네일 이미지를 올릴 필요없이 그냥 추출해내기
위한 것입니다.
기타 응용 해도 되겠죠....^^;;



<?
// 이미지추출 성공!

$extension = "ffmpeg";
$extension_soname = $extension . "." . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . "/" . $extension_soname;

// load extension
if (!extension_loaded($extension)) {
    dl($extension_soname) or die("Can't load extension $extension_fullname\n");
}


function getDirFiles($dirPath)
{
    if ($handle = opendir($dirPath))
    {
        while (false !== ($file = readdir($handle))) {
            $fullpath = $dirPath . '/' . $file;
            if (!is_dir($fullpath) && $file != "CVS" && $file != "." && $file != "..")
                $filesArr[] = trim($fullpath);
        }
        closedir($handle);
    }

    return $filesArr;  
}

 

$movies = getDirFiles(dirname(__FILE__) . '/test_media');


foreach($movies as $movie) {       
    $mov = new ffmpeg_movie($movie);


    $frame = $mov->getFrame(200);
 
 
 $frm = new ffmpeg_frame($frame->toGDImage());
 $frm->resize(200,300);
 $image = $frm->toGDImage();

 @Header("Content-type: image/jpeg"); 
 Imagejpeg($image);
 
 //이미지 추출부 끝
}

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
노력은 적게 하고 많은 것을 얻으려는 곳에 한숨이 숨어 있다. (괴테)