java 오디오 파일 편집 연습

송은혜·2022년 4월 30일
0

JAVA

목록 보기
7/8
post-thumbnail

팀 프로젝트로 오디오북 사이트를 진행하던 중, 음성 파일이 업로드가 되면 1분 미리듣기를 제공하는 것 때문에 음성 파일을 업로드하면 해당 파일 앞부분 1분을 잘라야했다.

아직 진행중이나 잊어버릴 것 같아서 실패했던 코드를 기록합니다 !
*저는 아직 코린이기때문에 코드가 이상하거나 참고할만한 수준의 코드는 아닐 수 있습니다 !...


팀에서 MultipartFile로 파일을 받기로 했고, 서버로 넘어오는 해당 파일을 byte형태로 읽을 수 있도록 해주고, FileOutputStream을 이용해서 지정해준 길이만큼만 읽게하고, 읽은 만큼만 저장하도록 구현해보았습니다.

0~1024000만큼만 읽게 지정해주었습니다. (write에 들어가는 길이는 int 형이고, 길이 지정에 큰 이유는 없고 실험삼아 지정해보았습니다.)

원본 음성 파일의 제일 앞부분부터 약 30초 정도만 해당 프로젝트 폴더안에 저장이 되었습니다.

아마존 S3에 업로드를 하고 파일들을 관리할 생각이였어서 , 제 컴퓨터에 저장된 미리듣기 파일을 S3에 업로드해주고 제 컴퓨터에 있는 미리듣기 파일은 삭제를 해야겠다고 생각했습니다. (원래 생각은 잘린 파일을 바로 S3에 업로드 하고 싶었지만, 현재 제가 서치한 결과로는 불가능하다는 결론이 내려져서 로컬에 저장을 한 번 하는 수 밖에 없었습니다 .. 한 번에 업로드 할 수 있는 방법이 있다면 댓글 부탁드립니다 ! .. )


미리듣기 파일이 저장된 경로를 통해 파일을 꺼내 , 아마존 S3로 업로드를 시켜주었습니다.
저장을 해주면서, 추후 해당 파일을 사용할 때를 위해 S3에 저장되는 경로를 객체에 넣어줍니다. (audioPreview 라는 객체에 저장해줌.)


그리고 삭제하는 로직을 만들었고,

최종적으로 음성을 자르는 메서드와 S3에 업로드를 하는 메세드 두개를 컨드롤러에서 사용해주고, 마지막으로 삭제까지 진행해주었습니다.

결과는 성공적이였습니다!!


하지만...같은 바이트크기를 지정해주고 파일을 잘라도 오디오 파일마다
편집이되는 재생 시간이 달랐습니다.
(혹시나해서 여러가지 파일을 테스트해보길 잘했더라고요 .. )
byte 나 int로 재생시간을 맞출 수는 없을지 구글링을 많이 해보았지만, 마땅한 참고자료를 찾지 못했고 제가 한 방법으로는 안될 것 같아서 결국 코드를 다시 짜기로 했습니다.



결국 지금은 AudioInputStream을 사용해서 구현중에 있습니다.
완성이 되면 또 올려보겠습니다.
잘 되는 듯 하나, AudioInputStream은 wav 확장자밖에 사용이 안되서 확장자 변환을 하는 코드도 구현을 해야하나 ..! 어떻게 구현해야할지 고민에 빠졌습니다 .

0개의 댓글