티스토리 뷰
반응형
동영상을 업로드 하다보니, 썸네일을 추출하여 적용해야 하는 일이 생겼다.
서버단을 PHP, Laravel framework를 사용하다 보니, 해당 위주로 검색 해 보았는데
Laravel-ffmpeg, PHP ffmpeg 등등의 오픈 API등이 있었지만 두가지 다 설명이 친절하지 않고, 적용하기도 까다로웠다.
일단, 해당 API를 사용하던 하드 코딩을 하든 FFMPEG 라는 프로그램이 설치가 되어 있어야 가능 하기 때문에 해당 프로그램을 먼저 다운 받자.
윈도우의 경우에는
https://www.ffmpeg.org/download.html
에서 다운로드 할 수 있다.
우분투의 경우에는 집에 메모를 해 놨는데 집에서 수정하여 업로드 하도록 하겠다.
다운로드 한 후에 소스 코드 작성은 다음과 같이 작성하면 된다.
$result = Storage::disk('s3')->put('movie',$request::file('movie'));
$videoFile = $request::file('movie');
$uuid = new uuid();
$thumname = $uuid->createUUID();
shell_exec("C:\\ffmpeg\\bin\\ffmpeg.exe -i $videoFile -ss 00:00:15 -vframes 1 -q:v 2 thumnails/$thumname.jpg");
$img = asset('/thumnails/'.$thumname.'.jpg');
$thumbnail = Storage::disk('s3')->put('thumnails/'.$thumname.'jpg',file_get_contents($img));
$uploadInfo = ['path'=>$result,'thumbnail'=>$thumname.'.jpg'];
S3에 즉시 업로드 하도록 하여서 소스코드가 조금 복잡한데, 썸네일을 추출하는 부분은 아래 소스코드만 확인하면 된다.
$videoFile = $request::file('movie');
shell_exec("C:\\ffmpeg\\bin\\ffmpeg.exe -i $videoFile -ss 00:00:15 -vframes 1 -q:v 2 thumnails/$thumname.jpg");
Form에서 받은 file을 $vidioFile에 저장하고,
shell_exec은 ffmpeg의 설치 경로를 처음에 적어 주며, 마지막에는 추출되는 이미지 파일의 경로와 파일 명을 적어주면 된다.
-ss 00:00:15는 동영상 파일의 15초 부분을 썸네일로 추출한다는 뜻이다.
※ 기본적으로 우분투 서버에서는 /usr/bin/ffmpeg 경로에 설치된다.
반응형
'Programming > PHP' 카테고리의 다른 글
Laravel - passport를 이용한 로그인 구현 (Oauth) (0) | 2022.05.03 |
---|---|
[Laravel] Laravel + Vue 연동 (0) | 2020.12.15 |
[Laravel] AWS S3 연동하기 및 파일 업로드 구현 (0) | 2019.12.11 |
[PHP Mailer] PHP 메일 발송하기 (0) | 2019.11.27 |
dompdf를 이용한 HTML -> PDF 변환 (0) | 2018.03.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Google App Script API
- GitAction
- Google App Script
- hasura
- 공도 맛집
- Vue.js
- 안성 카페
- next.js
- 명일방주
- 개발일지
- 성수 맛집
- 안성 맛집
- AWS
- 원곡 카페
- laravel
- php
- 안성 공도 맛집
- 서울 맛집
- Web Editor Image Uplaod
- PHP AWS S3
- 성안길 맛집
- S3
- CKEditor Image Upload
- CKEditor5 Image Upload
- ansible
- ckeditor
- laravel passport
- 칠곡 카페
- webGPU
- 성수동 맛집
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함