Stream( Steaming ) 과 Buffer 의 원리

JunSeong_Park·2023년 4월 12일
0

스트림이란 시간의 흐름에 따라 발생하는 연속적인 데이터의 흐름

더 자세히는 데이터, 패킷, 비트 등의 일련의 연속성을 갖는 흐름을 의미

Ex) 음성, 영상, 데이터 등의 작은 조각들이 하나의 줄기를 이루며 전송되는 데이터 열
호스트 상호간 또는 동일 호스트 내 프로세스 상호간 통신에서 큐에 의한 메세지 전달방식을 이용한 가상 연결 통로를 의미하기도함

스트림이 필요한 이유

보통 데이터를 전부 다운로드하고 출력하는 경우가 일반적이지만 그렇지 않은 경우도 있다

  1. 데이터의 양이 많아 전부 다운로드하는 속도가 느린 경우
  2. 위의 경우에 더해 데이터를 출력하는데에 모든 데이터들이 동시 송출이 되지 않는 경우

위와 같은 경우에는 데이터를 일부 받아 출력하고 받고 출력하는 식으로 반복하는 것이 더 효율적일 것이다 대표적인 예시로 유튜브가 있다..유튜브에서 재생하는 큰 용량의 영상이 재생이 되는 이유는 여러 개로 쪼갠 데이터를 미리 보내고 재생하는 방식으로 영상 제공이 되기 때문이다

Streaming 의 장점

동시에 다운로드하고 재생하기 때문에 시간이 절약된다
다운로드를 하지만 하드디스크에 저장하지 않기 때문에 하드디스크 용량에 영향을 주지 않는다

Streaming 의 단점

인터넷 환경이 좋지 않다면 그냥 다운로드 속도가 느려지는 것이 아니라 스트리밍의 경우 서비스 제공이 안될 가능성이 있다
같은 서버에 사용자가 많이 들어와서 동시에 동영상 스트리밍을 요청한다면 서버에 그만큼 부하가 걸리고 전송속도가 떨어지게 되기 때문이다

즉 인터넷 환경이 매우 중요하다

스트리밍 서비스 종류

1. Progressive Download

사용자가 URL를 통해 플레이어로 접근하면 플레이어는 파일을 다운로드하며, 다운로드한 부분을 재생한다.

이 방식의 단점은 데이터 소비가 사용자가 보는 만큼이 아니라 다운로드 된 만큼 소비된다는 것이다.

2. RTSP/RTMP Streaming

이 방식은 프로그레시브 방식과는 달리 미리 데이터를 다운받지 않고 사용자가 현재 시청하고 있는 비디오 프레임만을 전송해주며, 이미 시청한 데이터는 버린다.

장점은 RTMP의 경우 중간에 비디오 품질을 변경해도 이상이 없기 때문에 통신망이 변경되거나, 화면 크기가 달라져도 재생이 가능하며 라이브 스트리밍도 가능하다

3. Adaptive HTTP Streaming

서버에서 몇 초 단위의 비디오를 가지고 스트리밍하고, 클라이언트는 이들을 연속된 스트리밍으로 연결시킨다.

이 방식은 표준 웹 서버를 활용할 수 있기 때문에 CDN 업체들이 지원한다.

사진 출처 : http://blog.daum.net/weandmedia/19

Stream 과 Buffer 의 관계

서버로부터 동영상 데이터가 스트리밍된다면 컴퓨터가 데이터를 처리하기 위해 메모리 (RAM) 에 임시공간을 만들어 chunk ( 데이터를 처리하는 임의의 크기 ) 단위로 쪼개서 저장해두고 처리한다

데이터가 Buffer에 들어오고 나가는 것을 Stream

데이터를 저장하는 임시공간이 Buffer ( Buffer 와 chunk 를 같은 수준으로 맞추는 것이 일반적 )

Buffer 가 작동하는 방식을 Buffering

위와 같은 방식을 하나의 Streaming 이라고 할 수 있을 것 같다.

profile
안녕하세요 언어에 구애 받지 않는 개발자가 되고 싶은 박준성입니다

0개의 댓글