HOOK 을 이용해서 갤러리 스킨 또는 최신글 스킨에서 GIF 를 MP4로 출력하기 정보
HOOK 을 이용해서 갤러리 스킨 또는 최신글 스킨에서 GIF 를 MP4로 출력하기본문
위의 우성짱님의 올리신 자료를 적용했다는 조건하에
쓰는 글입니다.
( 웹호스팅의 경우 ffmpeg 설치를 하지 못해서 이 글 적용이 안됩니다. )
위의 글을 적용했다면 보기 페이지에서는 GIF 파일이 MP4 로 출력되지만,
리스트 페이지나 최신글 에서는 MP4로 출력이 되지 않습니다.
왜냐하면 스킨파일에 <img src="경로" /> 이렇게 코드가 있어서,
이것을 이미지태그 <img src="경로" /> 코드를 비디오태그 <video><source src="경로"></video> 이렇게 수정해야 하는 작업이 필요합니다.
5.4 버전 이상부터는 HOOK 기능이 들어가서 이것을 비교적 쉽게 적용하는 방법이 있습니다. ( 그래도 할게 많아요 ;; )
img 태그가 들어간 파일마다 img 태그에 HOOK 을 적용하는 것입니다.
예)
/theme/basic/skin/board/gallery/list.skin.php 파일이 있으면
대략 117번째줄에 아래와 같은 코드가 있습니다.
if($thumb['src']) {
$img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';
} else {
$img_content = '<span class="no_image">no image</span>';
}
echo $img_content;
이것을 아래와 같이 HOOK을 적용한 코드로 수정해 줍니다.
if($thumb['src']) {
$img_content = '<img src="'.$thumb['src'].'" alt="'.$thumb['alt'].'" >';
} else {
$img_content = '<span class="no_image">no image</span>';
}
echo run_replace('thumb_image_tag', $img_content, $thumb);
위의 예) 처럼 리스트 스킨이나 최신글 스킨의 이미지 출력하는 곳에 HOOK을 다 적용해야하는 과정이 필요합니다. ㅠ_ㅠ
( 이것은 그누보드 5.4.2.9 버전에 일괄 적용하도록 하겠습니다. )
그러면 extend/ 폴더에 아무.php 파일을 만들어서 아래 코드를 적용하면 <img src="움직이는.gif" >태그가 일괄적으로 비디오 태그로 출력될것입니다.
add_replace('thumb_image_tag', 'fn_thumb_image_tag_video', 0, 2);
function fn_thumb_image_tag_video($img_tag, $img_info=array()){
$imgs = $img_info;
if( isset($imgs['src']) ){
if( stripos($imgs['src'], G5_DATA_URL) !== false && preg_match('/\.gif$/i', $imgs['src']) ){
$gif_path = str_replace(G5_DATA_URL, G5_DATA_PATH, $imgs['src']);
if(function_exists('is_animated_gif') && is_animated_gif($gif_path)){
$mp4_path = preg_replace('/\.gif$/i', '.mp4', $gif_path);
// mp4 파일이 없으면 image 태그를 리턴
if( ! file_exists($mp4_path) ){
return $img_tag;
}
$filename = basename($imgs['src']);
$poster_file = 'poster_'.$filename;
$attribute = '';
if( isset($imgs['thumb_width']) && $imgs['thumb_width'] < 400 ){
$attribute .= ' width = "'.(int) $imgs['thumb_width'].'px" ';
if( isset($imgs['thumb_height']) ){
$attribute .= ' height = "'.(int) $imgs['thumb_height'].'px" ';
}
}
$img_tag = '<video poster="'.str_replace($filename, $poster_file, $imgs['src']).'" '.$attribute.' autoplay="autoplay" loop="loop" preload="auto" playsinline webkit-playsinline muted>'.PHP_EOL;
$img_tag .= '<source src="'.preg_replace('/\.gif$/i', '.mp4', $imgs['src']).'" type="video/mp4" />'.PHP_EOL;
$img_tag .= '</video>'.PHP_EOL;
}
}
}
return $img_tag;
}
추천
11
11
댓글 9개
와 드디어!
감사합니다!
잘 되네요~
감사합니다!
잘 되네요~
기다리면 복이 오네요.....ㅎㅎ
와우 감사합니다~
오 감사합니다
아직 적용은 못하지만 나중을위해서 ㅠㅠ 감사합니다
오라클클라우드에 그누보드 5.4.2.9 사용중이고,
우성짱님의 gif 파일을 mp4와 webm으로 변환 사용중입니다.
게시판에서 gif ->mp4 변환도 정상적으로 됩니다.
그런데 알려주신 소스 extend/ 에 php로 넣으면
페이지가 작동하지 않습니다.
현재 xxxx.com에서 요청을 처리할 수 없습니다.
HTTP ERROR 500
라고 뜨면서 홈페이지가 아예 열리지 않는데, 제가 뭔가 잘못한걸까요?
우성짱님의 gif 파일을 mp4와 webm으로 변환 사용중입니다.
게시판에서 gif ->mp4 변환도 정상적으로 됩니다.
그런데 알려주신 소스 extend/ 에 php로 넣으면
페이지가 작동하지 않습니다.
현재 xxxx.com에서 요청을 처리할 수 없습니다.
HTTP ERROR 500
라고 뜨면서 홈페이지가 아예 열리지 않는데, 제가 뭔가 잘못한걸까요?
우성짱님 자료에 이미 이 내용이 적용되어 있어서, 이 자료를 적용할 필요가 없을겁니다.
함수내용이 중복되면 에러가 일어납니다.
HTTP ERROR 500 는 PHP 에러로그에 기록되니 에러로그를 확인해 보세요.
함수내용이 중복되면 에러가 일어납니다.
HTTP ERROR 500 는 PHP 에러로그에 기록되니 에러로그를 확인해 보세요.
친절하신 답변 정말 감사합니다.
좋은정보 감사합니다.