gif to mp4 세번째 이야기 정보
gif to mp4 세번째 이야기
본문
그누보드 5.4.2.8에서 gif to mp4를 위해서 lib/thumbnail.lib.php 에 이벤트가 추가 되어서
ffmpeg이 사용가능한 곳에서는 그누보드 플러그인을 사용가능합니다.
그런데 갤러리 게시판이나 웹진 같은 곳에서 리스트 스킨에서 사진을 줄여서 보여주는데, GiF도 비디오로 보여주면 좋은데
사진 게시판 중간쯤 https://sir.kr/cm_pix/p2 에 보면 전체가 다 보입니다.
그래서 일반 유튜브처럼 초기에 2초-3초 정도만 보여 주면 좋을 것 같습니다.
그래서 ffmpeg옵션을 찾아보니 -t 옵션이 있네요 -t 3 으로 하면 3초정도의 mp4 만들어 집니다.
이벤트 코드 https://github.com/gnuboard/gnuboard5/blob/master/lib/thumbnail.lib.php#L729
run_event('is_animated_gif_after', $filename, $cache[$key], $time);
을 넣어주고
아래와 같이 받아서
function fn_is_animated_gif_after_gif($filename, $is_count, $time=0){
$time이 0이면 기존 ffmpeg으로 하고
$time이 있으면 아래와 같이 -t $time 옵션으로
@exec('ffmpeg -i '.escapeshellcmd(preg_replace('/[^0-9A-Za-z_\-\.\\\\\/]/i', '', $filename)).' -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" -c:v libx264 -pix_fmt yuv420p -movflags +faststart -t '.$time.' '.escapeshellcmd(preg_replace('/[^0-9A-Za-z_\-\.\\\\\/]/i', '', $mp4_file)));
get_list_thumbnail에서 시간 옵션을 가지고 불러지면 될 것 같습니다.
시간 옵션 테스트는 4.3버전으로 해 봤습니다.
4
댓글 6개

전 도저히 안되더라구요.
ssh에서는 당연히 되던데...
docker내부에 있어서 그런지 명령어가 안먹히더라구요.
그냥php이미지에 ffmpeg를 그냥 설치하는 고전적인 방식으로 했는데
그누보드에서 ffmpeg를 활용할 수 있는 방법 부탁드립니다.
2. time옵션을 넣으면 기존 생성된 mp4와 파일 이름이 같게 형성되지 않을까요?
extend이 들어가는 파일에 poster 생성할 때 앞에 접두어 붙이는 것처럼 3초짜리도 'preview_파일이름' 이런 식으로 지정하는 것도 좋아보입니다.
그래서 thumbnail.lib.php에서 gif 썸네일을 3초짜리 mp4로 지정해주면 제일 좋겠네요.


thisgun님께서 코드 몇줄만 알려주시면 금방 넣을 듯 하지만요..


한가한 겨울에 이것저것 해볼 요량인데 그럿도 올해는 가능 할까 모르겠습니다.
