AWS를 통한 스트리밍 서비스 구현합니다.
스트리밍 서비스란 직접 기기에 파일을 저장하지 않고 인터넷에서 음성, 영상 콘텐츠를 실시간으로 재생하는 방식을 말한다. 구체적 예로는 유투브,넷플릭스,사운드 클라우드 등이 있다. 이는 다운로드처럼 원하는 파일을 전부 내려받지 않고 컨텐츠를 이용할 수 있기 때문에 별도의 큰 저장 공간이 필요하지 않으며, 콘텐츠를 자유롭게 재생할 수 있다.
이러한 스트리밍 서비스의 원리를 살펴보면, 우선 사용자의 컴퓨터는 인터넷으로부터 음악이나 동영상 파일을 매우 작은 단위로 나누어 다운로드한다. 매우 작은 단위로, 다운로드 하자마자 압축을 풀고 다운로드한 부분만큼 재생한다. 사용자 인터넷의 속도가 빨라 작은 단위를 재생시간보다 빠르게 다운로드 할 수 있다면, 영상이 재생되는 동안 다음 부분이 재생될 준비를 마친 상태가 된다. 이와 같이 막힘없이 영상을 다운로드와 동시에 볼 수 있도록 만드는 것이 스트리밍이다. 이렇게 작은 단위로 계속해서 다운하는 것을 버퍼링(buffering)이라고 부르는데 인터넷 속도가 느릴 때 버퍼링 문제가 발생된다.
m3u8과 ts파일을 이용하여 스트리밍 서비스를 제공하면, 이러한 특징 덕분에 사용자는 영상 재생 시, 전체 영상 파일을 다운받지 않아도 된다. 그리고 특정 재생 위치부터 영상을 보는 경우, 해당 위치부터 영상을 다운받아 볼 수 있게 된다.
AWS
: 동영상을 스트리밍 할 수 있는 방법론은 다양하지만, AWS를 적극적으로 사용하는 방향으로 구현하였다. 영상을 HLS로 인코딩하고 그 파일을 AWS의 S3에 업로드하여 cloud front에 배포되고 Javascript를 이용해서 웹 브라우저 상에서 스트리밍 될 수 있도록 다양하다.
Cloud Front를 이용한 CDN 전송을 통해 데이터가 증가할 때도 데이터를 분산해서 전달할 수 있습니다. 이를 통해 지리적으로 먼 거리에 떨어져 있는 사용자에게도 지연 없이 콘텐츠를 전달할 수 있다. CDN은 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화하고 , 근접한 사용자의 요청에 원본 서버가 아닌 캐시 서버가 콘텐츠를 전달한다.
HLS(HTTP Live Streaming)