다양한 인터넷 비디오 재생(스트리밍) 방식을 알아보자


몇칠전 flv ( 플래쉬 비디오 ) 파일에 대해서 알아보다 보니 알게된 사실인데요.

이전까지는 그냥 다운로드 받으면서 재생되는 방식과 재생 요청이 들어오면 인코딩을 시작하여 해당 부분을 재생하는 스트리밍 방식 2개가 있다는건 알고 있었다만 해당 방식에 대한 정확한 명칭을 모르고 있었습니다.

하지만 이번을 계기로 정확한 명칭은 물론 추가적인 개선 기능들에 대해서 알게되었는데요.

혹시 관심 있으신분들에게도 도움이 되고자 글로 남겨봅니다.

※ Read Me ※
저는 아무래도 이쪽 분야에 대해서는 초보이기에 정확히 알고 있는 정보를 적기보다는 정보를 수집하고 나름대로 정의를 내린것을 정리한 만큼 잘못된 부분이 있을수 있습니다.

혹여나 자세히 아시는 분께서는 잘못된 부분이 있으면 지적 부탁드리며, 처음 보시는 분들은 이게 100% 확실한 정보다! 라기보다는 그렇구나~ 하고 70% 정도만 믿고 봐주셨으면 좋겠습니다.

0. Download 방식 (다운로드)
평상시 저희가 동영상을 보는 방식으로 동영상 파일을 다 다운로드 받은 이후 재생을 시작하는 방식으로 실시간 적인 재생 불가능.

장점 : 스트리밍 방식으로써 사용하지 않기에 없음.
단점 : 스트리밍 방식으로써 사용하지 않기에 없음.
추신 : HTTP, FTP 프로토콜 사용.

 

1. Video streaming 방식 (비디오 스트리밍)
보통 스트리밍이라고 하면 생각하는 방식으로, 사용자(클라이언트)가 홈페이지(서버)에 접속하여 동영상 재생 버튼을 누르면 그 즉시 해당 동영상을 서버에서 실시간 인코딩을 하여 사용자(클라이언트)에게 전송해주므로써 인코딩 하는데 조금의 시간이 소모되기에 재생 반응 속도가 느립니다. 하지만 다운로드 방식의 프로그레시브 방식과는 다르게 사용자 요청에 맞추어 실시간 인코딩(스트리밍) 방식이기에 Skip 기능에 대해서 매우 유연함(언제든지 보고자 하는 부분으로 선택시 프로그레시브 방식에 비해 반응이 빠름)을 보입니다.

장점 :
A.Skip 기능이 매우 자유로음
B.적은 인터넷 대역폭으로도 원활한 재생 가능
C.보안에 용의 (다운로드하지 않기에…)

단점 :
A.프로그레시브 방식에 비해 반응이 느림. (캐싱 불가능)
B.대규모 사용자가 몰릴 경우 서비스 불가.
( 실시간 스트리밍 방식은 서버에서 인코딩을 하기에 서버의 성능에 비례하여 최대 재생 가능한 사용자가 정해진다고 합니다. 이를 해결하기 위해서는 홈페이지용 웹서버외 별도의 스트리밍 서버를 예상 사용자 수치만큼 다수 구축하므로써 커버하는 방법이 있다고 합니다. 그외에도 있다고 하는거 같은데 전 전문가가 아니니 여기까지만…- _-;; )

추신 :  RTP/RTCP, RTSP 프로토콜 사용.

 

2. Progressive download 방식 (프로그레시브 다운로드)
요즘 각종 싸이트에서 자주 보이는 jwplayer나 naver, daum 제공 동영상과 같은 재생 방식으로, 사용자(클라이언트)가 홈페이지(서버)에 접속하여 동영상 재생 버튼을 누르면 그 즉시 동영상 파일이 다운로드 되면서 재생되는 방식으로 별도의 실시간 인코딩 작업이 없기 때문에 매우 반응이 빠릅니다. 또한 별도의 인코딩이 없이 전송하는 방식이기에 스트리밍 방식에 비해 서버에 걸리는 부하가 적기에 같은 성능의 서버라면 더욱 많은 사용자를 커버할수 있습니다. 하지만 그에 따른 단점으로 다운로드된 영상 부분만 재생이 가능하기에 Skip 기능에 대해 제한(다운로드 되지 않는 부분은 즉각적인 재생 불가)라는 큰 단점이 있습니다.

장점 :
A.서버의 성능이 낮아도 재생 반응이 빠름 ( 특히 Http 캐쉬 기능을 활용할수 있어 좋다함 )
B.사용하기 편함 ( 미디어 파일만 웹서버에 올려두고 player를 통해 호출만 하면됨 )

단점 :
A.Skip 이 조금 자유롭지 않음.
B.무조건적인 다운로드 방식이기에 필요치 않는 부분도 다운하기에 자원 낭비가 있음.
C.동영상을 다운로드 하기에 동영상 보안에 취약.

추신 :
A. HTTP, RTMP 프로토콜 사용.
B. 해당 스트리밍 방식은 사용자가 요청하는 위치(시간)부터 다운로드 받으면서 재생하는 방식이기에 사용 예정인 미디어 파일에는 헤더 혹은 각 프레임 단위마다 적혀있는 미디어 플레이에 필요한 정보가 들어있어야됩니다. (즉 FLV, MP4-스트리밍용-과 같은 파일만 사용가능)

2-1. Bitrate Throtlling (비트레이트 스로틀링)
MS에서 IIS7.0 부터 추가했다는 기능 중 한가지라는데요.
프로그레시브 다운로드 방식의 단점을 개선하기 위한 기능으로 사용자가 보지 않는 영역까지 계속 적인 다운로드를 하는게 아니라  현재 재생중인 부분에서 조금 앞선 부분까지만 다운로드 하는 방식으로 기존의 프로그레시브 방식에서 단점 중이 한가지인 낭비되던 자원을 save할수 있게 해준다고 합니다.
( 이방식은 역시 사용자보다는 관리자-서버-를 위한 기능 )

2-2. Smooth Streaming (스무스 스트리밍)
이것 역시 MS에서 추가한 방식으로… 비트레이트 스로틀링 방식과 마찬가지로 프로그레시브 다운로드 방식의 단점을 개선하기 위한 기능인데요.
이번 기능이 하는 역활은 프로그레시브 방식처럼 사용자가(클라이언트)가 동영상 재생버튼을 누르면 서버에서 사용자의 네트워크 상태를 자동으로 모니터링 해서 필요에 따라서 높은 화질과 낮은 화질 영상을 번갈아가며 전송해서 낮은 화질 영상을 이용해 skip을 용이하게 즉각적인 재생가능하게 만들고 이후 점점 높은 화질로 변경 재생하는 방식으로 프로그레시브 방식의 장점은 그대로 이어가면서 스트리밍 방식의 장점인 빠른 Skip 재생능력이 추가되는 기능으로 사용자와 관리자 모두에게 좋은 기능이라고 하네요.
( 특히 http 캐싱 기능도 쓸수 있어 매우 유용하다네요. )

 

정말 어떤 계기로 평상시에는 생각도 안하고 쓰던 다양한 인터넷 비디오 재생(스트리밍) 방식을 알아보게 되었는데요. 단순하게 이용만하거나 간단하게 구축 가능한 것들만 사용을 해오기만 하다 이렇게 자세한 것에 대해서 조금씩 알아나가다 보니 역시 네트워크쪽은 배워야될께 너무 많다라는걸 다시 한번 새삼스럽게 느껴봅니다.

이것으로 글을 끝마치겠습니다. 긴글 읽어주셔서 감사합니다.

 

해당 정보에 많은 도움을 준 참고 싸이트
ezfmx 솔루션 싸이트 : http://www.ezfmx.com/exellen/index.html?menu=customersupport&id=term
까만돌의 IT, 클라우드 비즈니스 이야기 블로그 : http://www.cooolguy.net
중스의 살아가는 이야기 : http://joongs.net