gif 파일을 mp4로 변환 (ffmpeg 필요함) > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

gif 파일을 mp4로 변환 (ffmpeg 필요함) 정보

gif 파일을 mp4로 변환 (ffmpeg 필요함)

첨부파일

gif2mp4.zip (3.1K) 232회 다운로드 2020-12-04 14:23:39
테스트한 버전5.4.2.8
호환 가능 버전5.4.2.8 버전 이상

본문

 

게시판 보기 페이지에서

 

gif 파일을 mp4 파일로 변환하여 출력하는 코드입니다.

 

서버에 ffmpeg 가 설치되어 있어야 gif 파일을 mp4로 변환할수 있습니다. ( 웹호스팅 환경에서 사용불가 )

 

그누보드버전은 5.4.2.8 버전 이상에서만 이 코드가 동작합니다.

 

SIR 사이트에는 이 코드가 적용되어 있습니다.

 

사용방법은 파일을 그대로 덮어쓰기하면 됩니다.

 

------ 수정 히스토리 --------

 

2020년 12월 4일, 에디터로 쓴글 삭제시 mp4 파일이 삭제되는 않는 문제 수정

추천
11

댓글 전체

도커를 사용하시는 분은 ffmpeg설치보다는 https://hub.docker.com/r/jrottenberg/ffmpeg/ 이것을 사용하세요.


@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  '.escapeshellcmd(preg_replace('/[^0-9A-Za-z_\-\.\\\\\/]/i', '', $mp4_file)));





@exec('docker run -v $(pwd):$(pwd) -w $(pwd) jrottenberg/ffmpeg:4.3-alpine -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 '.escapeshellcmd(preg_replace('/[^0-9A-Za-z_\-\.\\\\\/]/i', '', $mp4_file)));


을 하면 될것 같습니다.  ffmpeg 실행이 Docker안에서 바로 됩니다.

도커 이미지가 자동다운로드 안되면

docker pull jrottenberg/ffmpeg:4.3-centos 식으로 미리 다운로드 하시면 됩니다.
위의 것은 alpine리눅스이고  지금 예제는 centos입니다.

편하신 리눅스 패키지로 변경하시면 됩니다.  알파인 리눅스를 많이 사용하는 이유는 이미지 크기가 작다고 합니다.
도커에서 해보려고 했는데...

1. 호스트에서 ffmpeg 패키지 설치 후 도커에 있는 그누보드에서 원본파일 그대로 실행했을 시


sh: ffmpeg: not found


Nginx에서는 mp4 파일을 받아오려고 하지만, php에서는 명령어 실행이 안됨

2. 호스트의 ffmpeg 패키지 삭제 후 말씀하신대로 Docker 이미지 받아서 그대로 실행했을 때


sh: docker: not found


마찬가지로 docker라는 명령어를 발견할 수 없다고 합니다.

3. docker-compose로 ffmpeg 이미지를 데몬으로 실행

그냥 실행되고 있으니


@exec('docker 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 '.escapeshellcmd(preg_replace('/[^0-9A-Za-z_\-\.\\\\\/]/i', '', $mp4_file)));


이렇게 했더니


sh: docker: not found


마찬가지로 이렇게 나옵니다.

php-fpm:alpine 이미지 문제인지, 잘 모르겠네요.
정확한 path를 어떻게 찾아야할까요?

docker 간에 서로를 찾아야 하는데... volume을 공유해도 안되고..

depend를 걸어도 안되고... 같은 네트워크에 있어도 안되고 어렵네요.
음.. 포스터 gif 파일은 생성되는데 mp4 파일이 생성이 안되네요.

수동으로 ffmpeg 명령어를 내리거나, 도커 이미지를 활용했을땐 잘 되거든요.

왜 안될까요?

그누보드 최신버전 순정 테마, 순정 게시판, 갤러리에 첨부파일과 스마트에디터를 통해서 업로드 모두 해보았습니다.
도커의 php 환경이 문제였나봅니다. 실제서버에 돌려보니 잘 돌아갑니다.

아마 php의 disable_functions에 exec가 들어가있는 것 같습니다.

순정에 적용해보니 문제점(?)이 2가지 있는데요.

1. 게시글 내에서는 MP4로 잘 재생이 됩니다.

그런데 썸네일에는 여전히 움짤gif가 표시되어 MP4로 출력하는 의미가 없는 것 같습니다.

gif 움짤이 업로드 되었을땐 썸네일이 mp4로 변환된 파일이 자동재생되면 좋을 것 같습니다.

현재 SIR 사진 게시판처럼 썸네일에도 mp4 재생되게 하는 방법이 있을까요?

thumbnail.lib.php를 만져보았지만 잘 안되되더라구요 ㅜ ㅜ

2. 첨부파일로 움짤gif를 넣으니 클릭이 가능해서 클릭하면 원본 gif가 나오더라구요. 클릭이 안되게하는 것이 좋을 것 같습니다.

에디터로 올리면 클릭이 안되고 첨부파일로 올리면 클릭이 되는데, 어떻게 작업하면 움짤을 첨부파일로 올렸을때 클릭이 안되게 할 수 있을까요?
나리야에서도 가능할 것 같은데요.

아직 나리야 게시판 플러그인이 그누 최신버전 업데이트 이후 반영이 안되어서 기다리고 있어요.
플러그인 적용했는데 에디터로 올린경우 글 삭제시 원본 gif만 삭제되고 변환된 mp4 는 그대로 남아있네요. 이것도 같이 삭제할수 없나요?

안녕하세요 ffmpeg 명령어 설치 했고 파일을 /extend 에 올려놓고선 

gif 파일을 첨부 해보니깐 이미지 자체가 출력이 안되고 

파일 다운로드로 나오는건 어떤문제 인가요? 제가 초보라 답답하네요

 

f054c3bfd0938316fbb9550ea624c3e0_1697092300_3819.jpg

 

스킨은 처음 다운 받은 basic 이며 gnuboard5.5.8.3.3 버젼입니다

전체 503
그누보드5 플러그인 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT