일반적으로 촬영한 영상을 PC로 확인할 때는, 대부분의 Player가 다양한 Codec 를 지원하므로, 재생할 수 없는 문제는 크지 않습니다.
하지만 이것은 인터넷 브라우저의 video 엘리멘트를 사용하여 재생할 때 문제가 생깁니다.
chrome을 기준으로 개발하고 있는 저는 h264 형식의 코덱 형태만 video 엘리멘트로 재생을 지원하기 때문에 휴대폰으로 촬영한 영상을 업로드 하는 과정에서 이 형태로 convert 해야 했습니다.
기존에 동영상의 썸네일을 자동으로 만들어주는 ffmpeg 기능을 사용했는데, 아무것도 모르고 사용했을 때는 그냥 강의에서 사용하는 기술만 흉내냈습니다만, convert를 목적으로 한 경우에도 이 라이브러리를 사용할 수 있었습니다.
물론 이것은 구글링하면서 찾아낸 결과를 나에게 적용하면서 정상적으로 작동하는 것을 봐주는 것이기 때문에 정답이 아닐 수 있습니다 더 효율적인 방법을 알고 계시다면 알려주세요ㅜㅜ
h264 형태로 변환하는 코드입니다.
video Codec는 libx264로서 코덱을 맞추고 보존하는 포맷은 mp4로 한다.
끝나면, 해당 파일을 삭제합니다(fs 라이브러리 사용(내장).즉, 절차는 1. multer를 이용하여 로컬 스토리지에 파일을 업로드 하면 2. 해당 파일 경로를 불러와서 convert를 실시합니다.
이때 파일은 save에 써놓은 경로에 저장.3.convert가 끝나면 on(‘end’) 메서드 실행.4. 정상적으로 끝나면 지정해 놓은 경로에 파일이 들어갔다는 의미이므로, 해당 경로를 리턴하기 전에 원래 파일 삭제(스토리지 용량 때문에), 컨버트한 경로의 반환.5.error가 발생했을 경우 success:false를 반환한다.
이런 순서대로 컨버트 된 경로를 받아서 실제로 저장할 때는 원하는 경로로 파일을 옮겨놓을 수가 있습니다.
아래는 썸네일과 동영상 컨버트를 동시에 하기 위해 만든 메서드입니다.
ffmpeg에서 썸네일을 만들 때 같이 컴버트 메서드를 태우려고 했는데 안되더라고요.썸네일 제작 시간보다 영상 컨버트 하는 시간이 훨씬 오래 걸리기 때문에 해당 작업이 끝나면 결과가 리턴되도록 하였습니다.
하지만 시간이 오래 걸리는 만큼 앞으로 메서드를 어떻게 사용할 것인지 방향을 바꿔야 할 지도 모릅니다.
모든 영상을 무조건 컨버트할 필요는 없기 때문이죠.
앞으로는 업로드 -> 사용자 확인 -> 재생이 불가능한 경우에만 컨버트를 실행해볼까 합니다.