해결하기 위한 핵심 키워드는 "http range" 범위 요청이다.
서버에서 범위 요청에 대한 처리를 지원해야 문제를 해결 할 수 있었다.
범위 요청을 지원하는지 테스트 하는 방법은 아래 정보를 참고.
https://developer.mozilla.org/ko/docs/Web/HTTP/Range_requests
범위 요청에 대한 처리를 직접 구현하는 방법도 있었지만 단순히 영상만 재생하면 된다는 요구사항을 재확인 하였기에 spring 에서 제공하는 간단한 방법으로 구현하였다.
구현 코드의 핵심은 다음과 같다.
@GetMapping(path="/content/video/{path}", produces="video/mp4")
public Resource video(@PathVariable String path) throws Exception {
...
final InputStream videoStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream, size));
return new ByteArrayResource(FileCopyUtils.copyToByteArray(videoStream));
}