Problem
배포된 서버에서도 로컬과 동일하게 ffmpeg가 작동되어야 하는데 업로드가 되지 않았습니다.
How to solve
Cannot run program "ffprobe": error=2, No such file or directory
에러를 해결하기 위해 배포된 서버도 로컬과 동일하게 ffmpeg를 설치해주었습니다.
John Van Sickle - FFmpeg Static Builds 를 통해 배포된 서버에 ffmpeg static build 설치
로컬과 동일한 코드로 ffmpeg의 인코딩 기능과 썸네일 생성 기능을 사용하려고 시도했더니
/tmp/{prefix}_{UUID}.{extension} (No such file or directory) 에러가 발생했고
서버에 있는 /tmp에 대한 권한 문제인가 싶어서 읽기 및 쓰기 권한을 부여해도
동일한 에러가 발생했습니다.
설치된 ffmpeg가 정상 작동하지 않는 것인가 싶어서 서버에서 직접 ffmpeg 명령어를 사용해
썸네일 생성과 인코딩을 시도했고 코드에서 사용한 명령어를 통해 정상적으로 썸네일 생성과
인코딩이 실행되는 것을 확인했습니다.
확인에 이용한 ffmpeg 명령어
ffmpeg는 정상적으로 설치 및 작동 되는 것을 확인했지만
로컬과 동일한 코드 속 ffmpeg 명령어는 제대로 실행이 되지 않는 것을 확인했습니다.
로컬의 ffmpeg 코드는 s3의 objectUrl을 받아서 인코딩과 썸네일을 생성함
배포된 서버에서도 s3의 objectUrl을 이용해 명령어로 인코딩 시도했지만 실패함
s3 url를 입력하면 작동하지 않지만 상대경로로 이미지의 위치를 입력했을 때는 ffmpeg 명령어가
정상적으로 작동하는 것을 통해 코드에서도 s3 url 을 사용하는 것이 아니라 직접 MultipartFile
타입의 동영상 파일을 ffmpeg를 이용해 인코딩을 진행하고 썸네일을 생성하는 과정에 사용하도록 했고
정상적으로 배포 서버에서도 작동하는 것을 확인했습니다.
정상 작동을 확인한 코드 일부