본문 바로가기

Java18

[Java] FFmpeg로 gif파일 mp4로 변환하기 - 2 해당 글은 Ubuntu 운영체제에서 제대로 동작하지 않는것을 발견했습니다 . 참고하고 읽어주세요! 지난 글에서 FFmpeg를 사용해서 gif 파일을 mp4로 변환하는것을 진행했습니다. 파일 변환은 잘 되지만 환경설정에 있어서 너무 불편한 부분이 있었습니다. FFmpeg가 서버내에 설치돼있어야 합니다. FFmpeg의 설치경로를 사용자가 직접 설정해줘야합니다. -> 테스트가 힘든 환경입니다. MacOS에서 ffmpeg를 설치하면 기본 경로는 /usr/local/bin/ffmpeg 입니다. (homebrew 사용) ubuntu에서 ffmpeg를 설치하면 기본 경로는 /usr/bin/ffmpeg 입니다. (apt 사용) 이로 인해서 ffmpeg를 깜빡하고 설치를 안하거나 경로 설정을 제대로 안해주면 애플리케이션.. 2021. 9. 30.
[Java] FFmpeg로 gif파일 mp4로 변환하기 - 1 FFmpeg로 gif파일 mp4로 변환하기 - 1 놀토 서비스를 만들면서 프론트엔드 크루가 이미지 저장시 gif 파일 형식을 mp4 파일 형식으로 변환해달라는 요청을 했습니다. 'gif형식이 대중적이지 않은가?' 라고 생각했는데 gif 파일을 mp4 파일 형식으로 변경했을때 용량의 차이가 어마어마했습니다. 이름은 다르지만 mp4로 변환한 것이 resize2.mp4 파일입니다. 대략 50배의 용량 차이가 났습니다. 그래서 당장 'gif파일을 mp4로 어떻게 서버에서 변경해줄 수 있을까?' 고민했습니다. 놀토에서 이미지는 AWS S3 버킷에 저장하고 있었습니다. 그렇다면 S3에 저장하기 전에 gif를 mp4로 변환해야합니다. Java에서 기본적으로 제공해주는 ImageIO는 JPEG, PNG, GIF, B.. 2021. 9. 21.
[Java] ExecutorService 인터페이스 execute() 와 submit() 차이점 ExecutorService 인터페이스는 스레드의 실행을 관리하고 제어하는 데 도움이 되는 메서드를 추가하여 Executor를 상속합니다. java.util.concurrent 패키지에 정의되어 있습니다. 결과를 반환하는 스레드, 스레드 집합을 실행하고 종료 상태를 결정하는 메서드를 정의합니다. 이 글에서는 execute()와 submit()라는 두 가지 방법의 차이를 살펴보겠습니다. 제목에는 ExecutorService 인터페이스의 execute() 메서드와 submit() 메서드라고 했지만 실제 구조는 아래와 같습니다. execute() 메서드는 Executor 인터페이스에 정의 되어있습니다. submit() 메서드는 ExecutorService 인터페이스에 정의되어있고 Executor 인터페이스를 .. 2021. 8. 29.
[Java] resource 디렉토리의 경로 가져오기 자바 애플리케이션은 resource 디렉토리에 정적 파일을 저장합니다. 이 때 파일의 경로를 알기 위해서는 resource 디렉토리의 경로가 필요합니다. 이 때 resource 디렉토리의 경로를 가져오기 위해 ClassLoader를 활용합니다. 꼭 클래스 로더에 대한 지식이 필요하진 않습니다. 다만 궁금하신 분은 이 글을 읽어주세요! resource 디렉토리의 경로 가져오기 resource의 디렉토리를 가져오기 위해 ClassLoader에 있는 getResource() 메소드를 사용합니다. public URL getResource(String name) 이 메소드는 주어진 이름을 가진 자원을 찾으려고 시도합니다. 먼저 리소스의 상위 클래스 로더에 위임합니다. 부모가 null 이면 가상 머신에 빌드된 클래.. 2021. 8. 28.
[Java] ClassLoader(클래스 로더) 클래스 로더는 런타임중에 JVM(Java Virtual Machine)에서 동적으로 Java 클래스를 로드하는 역할을 합니다. 클래스 로더는 JRE(Java Runtime Environment)의 일부입니다. 따라서 JVM은 클래스 로더 덕분에 Java 프로그램을 실행하기 위해서 파일 시스템이나 파일에 대해 알 필요가 없습니다. Java의 클래스는 실행 시 한번에 메모리에 로드되는것이 아니라 애플리케이션에서 필요로 할 때 메모리로 로드됩니다. 클래스가 필요한 순간에 메모리로 로드하는 역할을 하는 것이 ClassLoader(클래스 로더) 입니다. 내장 클래스 로더의 종류 자바에는 3가지 클래스 로더가 있습니다. Bootstrap 클래스 로더 Extension 클래스 로더 (자바 9부터 확장 매커니즘이 de.. 2021. 8. 27.