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

그누보드5 플러그인

그누보드는 여러가지 기능을 추가하기 쉽도록 제작 되었습니다.
플러그인 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y

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

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

첨부파일

첨부파일 gif2mp4.zip (3.1K) 116회 다운로드 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 는 그대로 남아있네요. 이것도 같이 삭제할수 없나요?
먼저 감사의 말씀을 드립니다
thisgun님과 이 플러그인을 사용 중인 여러분들에게 여쭙고 싶은게 있는데요
이 플러그인을 통해 Gif를 MP4, WEBM으로 변환 작업하는 이유가 트래픽 쪽으로만 반영되어 있는 것 같아 개인적인 소견으로는 DB자체에 변환해서 입력하고 서버 용량을 차지하는 GIF 자체는 삭제하도록 하는 방법을 생각해 보고 있습니다.
짧은 실력으로 write.update.php을 이용해서 작업해 보았는데요
글 작성 > 글 수정 > 글 작성해야만 되는 것이 당연한 이치인 것 같은데 방법이 통 떠오르지 않습니다
어떠한 방법이 있을지 한번쯤 고민해 보신 분이나 저와 같은 생각으로 해결을 본 분들의 소중한 의견을 듣고 싶습니다
전체 373
그누보드5 플러그인 내용 검색

회원로그인

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

© SIRSOFT