C/C++에서 포인터는 처음에 이해하기 어려운 부분 중에 하나입니다.

 

포인터때문에 C/C++에 흥미를 잃고 공부하기가 싫어지고는 합니다.

 

사실 포인터는 하나의 타입 그 이상도 이하도 아닙니다.

 

C를 처음 공부할 때 쓰는 scanf()를 사용할 때는 printf()와는 다르게

 

변수명에 &를 붙여주는 것을 기억하실 것입니다.

 

그리고 &가 주소를 나타낸다는 것도 다들  알것입니다.

 

포인터는 바로 이 주소를 저장하는 타입입니다.

 

변수는 메모리의 영역에 붙어있는 이름입니다.

 

변수가 선언되면 다음과 같이 메모리 영역이 확보가 됩니다.

 

 

int 형 변수를 하나를 선언하면 다음과 같이 4바이트가 할당이 됩니다.

 

포인터의 선언은 타입명* 변수명; 의 형태로 선언합니다.

 

포인터는 흔히 후라이팬과 손잡이로 표현이 많이 되곤합니다.

 

후라이팬 중심부는 실제 할당된 메모리로 보고,

 

포인터는 손잡이로 보는 것이죠.

 

일반적인 변수는 할당 시에 초기화를 하지 않으면 쓰레기 값을 갖게 됩니다.

 

이 쓰레기 값을 쓴다고 해서 프로그램이 죽거나 하는 일은 드믑니다.

 

int n;을 선언하고 화면에 출력하면 쓰레기 값이 출력될 뿐이지 프로그램이 죽진 않습니다.

 

하지만 포인터는 선언시에 들어 있는 쓰레기값으로 인해

 

프로그램이 죽을 확률이 아주 높습니다.(안 죽을 확률이 로또 1등될 확률보다 높을 지도...)

 

포인터가 메모리의 어느 지점을 가리키는데 쓰레기값이 들어 있으면 가리키는 곳이

 

현재 사용중인 프로세스가 할당한 곳인지, 아닌 지 알 수 없기 때문입니다.

 

그래서 보통 포인터형은 int* pI = NULL의 형태로 초기화를 해줍니다.

 

NULL 영역(Windows OS에서는 64K의 NULL 영역이 존재합니다.)을

 

가리키게 해주는 것입니다.

 

사실 포인터는 4바이트나 8바이트(64비트 OS의 경우)를 갖는 변수에 불과합니다.

 

그 곳에 메모리의 한 영역을 저장해 놓는 것 뿐이죠.

 

그래서 포인터는 기존에 프로세스가 할당해놓은 메모리나

 

새로할당되는 메모리를 가리키게 해야합니다.

 

int Index = 0;

int* pIndex = NULL;

pIndex = &Index;

 

이런 형식으로 사용해야 합니다.

 

pIndex는 주소값을 갖게 되고 Index의 주소값을 넣어주기 위해서 &Index로 한 것입니다.

 

(scanf에서는 그래서 &로 주소값을 넘겨줍니다. 변수로 넘겨주면 안에 값을 넣어도

 

함수를 빠져 나오면 아무 의미가 없어지기 때문입니다.

 

더 자세히 얘기하면 변수로 넘기면 함수 안의 변수는 넘겨주는 변수와 값만 같지

 

메모리 영역은 다르기 때문에 아무리 수정해놔도 원래 변수는 그대로인거죠.)

 

함수에서 포인터를 넘겨준다는 것은 효율성의 측면에서도 이득을 가져옵니다.

 

만약 구조체가 함수에 들어가야 한다면,

 

구조체를 통채로 넘기는 것보다는 포인터(4바이트나 8바이트일 뿐인...)를 넘겨주는 것이 유리하죠.

 

포인터(후라이팬 손잡이)를 쥐어줄테니

 

후라이팬에 있는 요리를 직접 요리(데이터의 수정 및 참조)해보라는 것이죠.

 

포인터는 일반적으로는 이런 형식으로 많이 사용됩니다.

 

MyStructType*pMyStruct = new MyStructType;

 

이렇게 사용하면 new 연산자를 통해서

 

메모리의 힙(동적 할당이 이루어지는 부분)부분 어딘가에 메모리가 생성이 되고

 

 

할당된 메모리의 시작번지만 포인터에 넣어주는 것입니다.

 

그럼 우린 이 포인터를 가지고 어디에 생성됐는지 몰라도

 

메모리 영역을 참조하고 쓰고할 수 있는 것입니다.

 

일반적으로 구조체나 클래스를 저런 식으로 동적할당할 때는

 

MyStruct->멤버변수 의 형태로 사용을 합니다.

 

물론 (*MyStruct).멤버변수의 형태로 사용도 가능합니다.

 

여기에서는 ()가 아주 중요합니다만(연산자의 우선순위 때문에...), 사실 저렇게는 잘 안씁니다.

 

일반적으로 프로그램이 죽는 경우는 이 포인터를 잘못 사용하기 때문에 발생합니다.

 

포인터가 사용되지 않을 때는 항상 NULL을 가리키게 해놓고

 

NULL일 때에 대한 예외처리만 확실하게 해준다면 이런 경우는 많이 줄어들 것입니다.

 

포인터는 프로세스가 할당한 유효한 메모리의 주소에만 유효합니다.

 

이것만 기억하면 프로그램을 잘 죽지 않게 만들 수 있습니다.

 

대부분의 메모리 할당(new, malloc, calloc, LocalAlloc등등...)은

 

메모리의 부족 등의 이유로 메모리 할당에 실패하면 NULL을 호출합니다.

 

메모리 할당 실패일 경우에 대한 예외처리도 확실하게 해두면

 

포인터의 잘못된 사용으로 프로그램이 죽거나 하지 않을 것입니다.

 

물론 메모리 할당에는 항상 해제가 뒤따라야 합니다.

 

new는 delete와 malloc은 free와 항상 짝이 맞아야합니다.

 

기본 타입 변수의 경우 *변수명은 포인터가 가리키는 곳의 정보(후라이팬)을 나타내고

 

변수명은 포인터 타입으로 선언된 그 자체(후라이팬 손잡이 = 포인터가 가리키는 곳의 주소)

 

를 나타냅니다.

 

즉, int A = 555; 이고 포인터 변수 int* pA = &A라고 할 때,

 

(A의 메모리 주소가 0x12345678이라고 가정)

 

*pA = 555이고, pA는 0x12345678 이 되는겁니다.

 

그 외에도 포인터 타입은 여러가지 특이점이 존재합니다.

 

포인터는 분명 사용하기가 까다롭기는 하지만, C/C++을 강력한 언어로 만들어주는

 

중요한 문법 중의 하나입니다.


출처 - http://blog.naver.com/PostView.nhn?blogId=psychoria&logNo=40125953503





Posted by linuxism
,


CentOS 6.4 Netinstall Guide – Network Installation Screenshots

This step-by-step walkthrough with screenshots, howto install CentOS (The Community ENTerprise Operating System) 6.4 Linux with Network installation (NetInstall).

CentOS 6.4 is released and it brings all Red Hat (RHEL) 6.4 goodnes to all users CentOS 6 users. Have fun!

Want just CentOS 6.4 Netinstall mirror URL?
Goto CentOS 6.4 Netinstall URL

1. Download CentOS 6.4 Net Install (NetInstall) image

Select mirror here:
CentOS 6.4 i386 version
CentOS 6.4 x86_64 version

Select ISO image
CentOS-6.4-i386-netinstall.iso
CentOS-6.4-x86_64-netinstall.iso

2. Burn CentOS 6.4 Image to CD and Boot Computer

Check CentOS image MD5 sum and burn image to CD with your favourite CD burner. And boot computer using CentOS Installation CD.

3. CentOS 6.4 installation

3.1 CentOS 6.4 Grub menu -> select install or upgrade existing system

CentOS 6.4 Grub

3.2 Booting CentOS 6.4 Installer

CentOS 6.4 Booting

3.3 Disc Test (You can skip this or select media test, if you want to test installation media before installation)

CentOS 6.4 Disc Test

3.4 Select Installation Method -> URL

CentOS 6.4 Select Installation Method

3.5 TCP/IP Configuration

CentOS 6.4 TCP/IP Configuration

3.6 Setup CentOS 6.4 Netinstall URL

Select a mirror near you from CentOS mirror list.

Example mirrors.sonic.net

CentOS 6.4 – i386 – 32-bit

http://mirrors.sonic.net/centos/6/os/i386/

or

http://mirrors.sonic.net/centos/6.4/os/i386/

CentOS 6.4 – x86_64 – 64-bit

http://mirrors.sonic.net/centos/6/os/x86_64/

or

http://mirrors.sonic.net/centos/6.4/os/x86_64/

Alternatively use CentOS own mirror:

CentOS 6.4 – i386 – 32-bit

http://mirror.centos.org/centos/6/os/i386/

or

http://mirror.centos.org/centos/6.4/os/i386/

CentOS 6.4 – x86_64 – 64-bit

http://mirror.centos.org/centos/6/os/x86_64/

or

http://mirror.centos.org/centos/6.4/os/x86_64/

CentOS 6.4 Netinstallation URL Setup

3.7 Retrieving install image

This might take some time depending on your internet connection and server.
CentOS 6.4 Retrieving Install Image



출처 - http://www.if-not-true-then-false.com/2011/centos-6-netinstall-network-installation/



Posted by linuxism
,


Streaming 기술 이해

 

1. Streaming Service 개요

영상 전송 방식은 크게 다운로드 방식 프로그레시브 다운로드 (Download) , (Prog ressive Download)방식, 스트리밍(Streaming ) 방식으로 구분한다.

 

1.1 Streaming 이란?

* Streaming

- 인터넷에서 데이터를 실시간 전송, 구현할 수 있게 하는 기술.

- 스트리밍은 '흐르다', '흘러내리다', '연속되어 끊이지 않고 흐르다' 등의 의미로,

데이터가 조금씩 연속적으로 흘러나온다는 개념과 연관

즉, 어떤 사운드나 비디오 파일을 하나의 형태가 아닌 여러 개의 파일로 나누어

물 흐르듯이(Streaming) 연이어 보내는 것.

- 동영상 파일 등은 용량이 크기 때문에 한꺼번에 파일 전체를 보내주기란 힘들다.

이를 해결하기 위해서 조금씩 파일의 일부만(실제로 영상이 플레이되는 분량만

큼만) 실시간으로 전송해 주는 것이 '스트리밍'이다.

- 선택된 해당 콘텐츠 파일을 다운로드(Download)의 방식이 아니라 사용자의 네트

워크 상황에 맞게끔 방송의 형식으로 실시간 시청 분량만큼을 조금씩 흘려준다.

- 사용자가 접속하고 있는 인터넷 네트워크의 속도에 맞춰 비교적 큰 크기의 스트

리밍 파일은 아주 작은 크기의 조각들로 나누어진다. 이 조각들은 각각 뒤의 조

각들과 이어질 수 있는 헤더정보를 가지고 전송된다. 구동 프로그램에서는 이

조각들을 받으면서 동시에 압축을 풀어 동영상이나 음성으로 재생하게 되는 것.

- 인터넷에서 동영상을 다운로드가 아닌 실시간 전송에, 실시간 구현이라는 개념을

가능케한 것이 바로 스트리밍 기술이다.

 

* Progressive Download

- 동영상 파일이 서버로부터 클라이언트에 전달될 때 파일 일부가 도착하는 대로

먼저 재생하는 방법

- 전체 파일이 모두 도착하기 전에 재생을 시작하므로 사용자가 입장에서는 서버

로부터의 반응이 매우 빠른 것처럼 보임.

- 프로그레시브 다운로드 방식으로 동영상이 꾸준히 재생되기 위해서는 서버로부

터 클라이언트에 전달되는 네트웍 속도가 동영상이 가진 데이터 레이트 보다 높

아야 한다. 만약 512Kbps의 동영상이라면 적어도 512Kbps의 네트웍 속도가 제

공되어야만 동영상이 끊임 없이 제공됩니다.

 

* Streaming vs Progressive Download

- 네트웍 속도가 충분히 빠르면 사용자의 입장에서 보면 스트리밍 방식과 프로그

레시브 다운로드 방식에는 거의 차이가 없어 보임.

- 그러나 스트리밍은 프로그레시브 다운로드에 비해 훨씬 효과적으로 데이터 전송

을 처리한다. 서버에서 클라이언트와 통신하면서 필요한 양만큼 잘라서 보낸다.

- 따라서 서버의 부하를 통제할 수 있고 클라이언트의 요청에 대해 매우 효과적으

로 대응할 수 있다.

- 프로그레시브 다운로드는 사실 웹 서버에 의한 파일 다운로드와 별 차이가 없다.

클라이언트에서 파일 다운로드가 끝나기 전부터 재생을 시작한다는 점이 다를

뿐이다.

 

1.2 Streaming Service 종류

스트리밍 서비스는 크게 영상이나 음성을 받아 서비스하는 라이브 방송과 이미

저장된 멀티미디어 데이터를 스트리밍 하는 주문형 서비스로 구성될 수 있다.

 

* VoD Streaming

- 온 디맨드 스트리밍(On-Demand Streaming)에서는 촬영과 편집을 거쳐 동영상

파일을 제작한 다음 사용자의 요구가 있을 때 동영상을 제공

* Live Streaming

- 비디오와 오디오를 실시간으로 인코딩해 많은 사용자에게 동시에 제공

* HTTP Live Streaming

- 라이브 스트리밍을 위한 전통적인 프로토콜로인 RTP/RTSP는 도입 비용이 높고

방화벽 환경에서 서비스가 원활하게 이루어지지 않는 단점이 있다. 이를 보완하

기 위해 HTTP를 이용해 원활한 스트리밍 서비스가 가능하도록 Apple이 개발

- 스트림 세그먼터(Stream Segmenter)는 일정한 시간 간격마다 입력받은 미디어

데이터를 분할해 파일을 만들고, 그 분할한 파일에 접근할 수 있는 메타데이터

(m3u8)를 생성하는 일을 한다.

- MPEG-2 TS 코덱 사용. Adaptive Bitrate Streaming 지원

* IPTV

- IPTV는 스트리밍 데이터를 신뢰할 수 없는 경우 패킷 손실과 지연에 민감하다.

IPTV에는 움직이는 영상을 전달하기 위하여 1초에 나타내는 프레임 수를 올바르

게 활용할 수 있게 하기 위하여 별도로 정해 둔 최소 속도를 요구한다.

* unicast vs multicast

 

 

2. Streaming 구성

2.1 Streaming 서비스 구성 요소

* Server side

- Streaming Server(Encoding 포함)

- Web Server

* Client side

- Streaming Client

 

2.2 Streaming 서비스 동작 원리

- 스트리밍 서비스는 서버와 클라이언트로 구성된다.

- 멀티미디어 데이터는 서버에서 클라이언트로 전송되며 클라이언트는 이를 재생 - 인코딩 서버는 캠코더나 마이크 등의 장비로부터 받아들이는 아날로그 데이터를

압축 기술을 사용하여 디지털 데이터로 바꾸는 기능을 한다.

- 스트리밍 서버는 미리 저장된 데이터나 인코딩 서버에서 전달된 라이브 데이터

를 사용자에게 전송하는 기능을 한다.

- 웹서버는 사용자에게 어떠한 서비스가 있는지를 알려주는 매개체 역할을 한다.

- 이렇게 구성된 스트리밍 서비스 시스템에서 사용자는 웹서버에 요청하고, 스트리

밍 서버는 사용자가 요청한 사항에 대하여 멀티미디어 데이터를 보낸다.

- 사용자 측에서 받은 데이터는 받는 즉시 실시간으로 재생되고 받은 데이터는 삭

제하여 불필요한 저장을 피한다.

 

 

2.3 Streaming 서비스 구성도

* VoD/Live Streaming 서비스

 

 

 

* 멜론 서비스

 

 

3. Streaming 관련 기술

멀티미디어 스트리밍 기술을 이루는 세 축은 압축 기술, 네트워크 기술, QoS 기술이다. 이 중 압축기술과 네트워크 기술은 없어서는 안 될 중요한 요소이다. QoS 기술은 초기 스트리밍에서는 고려되지 않았던 것이지만, 네트워크 환경의 발전이 무선 네트워크에서도 스트리밍 서비스가 가능하게 함으로써 사용자의 서비스의 질적인 향상에 꼭 필요한 기술이 되었다. 원격 교육, 온라인 경매, 음악 방송, TV VOD 서비스 등 여러가지 서비스가 최근에 많이 접하게 되는 것들이다.

 

3.1 데이터 전송 및 제어 프로토콜

* RTP(Real-time Transport Protocol)

- 음성이나 동영상 등의 데이터 스트림을 실시간으로 전달할 때 사용하는 데이터 전송 프로토콜

- RTSP와 H.323 프로토콜의 데이터 부분에 사용

- 거의 모든 VoIP 관련 제품은 RTP를 사용하여 음성 정보를 IP 네트워크에 전달

- RTP 패킷을 받은 호스트는 각 패킷의 시간 정보에서 시간적인 관계를 파악하고 데이터를 재생

- 네트워크를 통해 전송되는 가운데 패킷 손실과 지연이 일어나지만 영상이나

음성 데이터는 데이터의 일부가 결여되어도 재생이 가능하기 때문에 데이터의

수신자는 손실과 지연 패킷을 무시하고 수신 측이 기대하는 시간에 도착 패킷만

을 이용하여 데이터를 재생

- RTP는 UDP를 전송 계층 프로토콜로 사용하지만 UDP 이외도 사용 가능

- 자원 예약 등을 위해 별도의 프로토콜과 병행. RTP는 전송률 제어 등을 위하여

RTCP(RTP Control Protocol)라는 프로토콜이 함께 사용된다.

- RTP architecture

 

- RTP Header 구조

* 부하 타입(Payload type) : 오디오/비디오 인코딩 종류

* 타임스탬프(Timestamp) : 패킷 간의 시간관계

* 동기발신 식별자(SSRC, Synchronization Source Identifier)

원래의 정보열에 대한 식별

* 기여발신 식별자(CSRC, Contributor Source Identifier)

묶여서(혼합되어) 단일의 정보열로 되면 이에 대한 식별

 

* RTCP(Real-Time Transport Control Protocol)

- RTP 세션상의 RTP 데이터 스트림에 대한 실시간 멀티미디어 전송의 제어감시

- RTP의 송수신과 관련하여 멀티미디어 세션 참여자들이 QoS 관련 정보를

(패킷지연, 패킷손실, 지터 등) 주기적으로 교환 하도록 하는 역할

- RTP에 대한 Flow Control을 위해 사용

 

* RTSP(Real Time Streaming Protocol)

- IETF가 1998년에 개발한 통신 규약

- 스트리밍 데이터를 제어하기 위한 방법을 제공

- 오디오 , 비디오 등의 멀티미디어 데이터를 포함하는 미디어 서버를 원격 조작

하기 위한 프로토콜

- 명령어는 "PLAY", "PAUSE" 같이 VCR 동작하고 비슷하며 시간 정보를 바탕으로 서버에 접근

- 실제 미디어 스트리밍 데이터를 전송하지 않고, RTP 규약을 사용해서 전송 계층 으로 실제 오디오/비디오 데이터를 전송

- RTSP 규약은 HTTP 규약하고 비교해 볼 때, 문법이나 동작이 비슷

- 하지만, HTTP가 무상태형(stateless)인 반면에 RTSP는 상태형(stateful) 규약

- 임의의 세션 ID는 세션을 추적할 때마다 사용되며, 이 방법은 지속적인 TCP

연결을 필요

 

* MMS(Microsoft Media Server)

- 마이크로소프트 네트워크 스트리밍 프로토콜

- Windows Media Service의 유니캐스트 데이터를 전송하는데 사용

- MMS는 UDP나 TCP를 통해 전달할 수 있으며, 기본 포트는 UDP/TCP 1755

 

* RTMP(Real Time Messaging Protocol)

- 어도비 시스템즈사의 독점 컴퓨터 통신 규약

- 오디오, 비디오 및 기타 데이터를 인터넷을 통해 스트리밍 할 때 사용

- 어도비 플래시 플레이어와 서버 사이의 통신에 이용

- RTMFP(Real Time Media Flow Protocol) : 낮은 지연 UDP 스트리밍과 여러

Adobe Flash 플레이어 간의 P2P 통신을 가능하게하고 다양한 라이브 실시간 통

신을 가능하게 한다

 

3.2 codec(데이터 압축)

스트리밍의 가장 중요한 기술은 멀티미디어 데이터를 압축하고 재생을 위해 해독하는 코덱 기술로, 여기에는 인코드와 디코드가 있다.

일반적으로 영상을 압축하는 원리로 첫 번째는 “공간적 중복성(Spatial Redundancy)을 제거”하는 방법이 있고, 두번째는 “시간의 중복성(Temporal Redundancy)을 제거”하는 방법이다. 영상에서 인접하는 두 프레임은 거의 유사하다. 이 원리를 이용하여 다음 프레임의 움직임을 예측하고 보상하는 방식으로 시간의 중복성을 제거할 수 있다.

 

* WMV/WMA

- 마이크로소프트가 Windows Media Format의 핵심을 이루는 것으로서 개발한 비

디오 코덱/오디오 코덱

- 낮은 비트 레이트에서도 영상의 손실이 적고, 스트리밍(ASF 컨테이너 저장하는

동안에만)에도 대응하고 있기 때문에, 인터넷의 인터넷 전송에 적합하다.

* H.264(MPEG-4/AVC)

- ITU-T의 비디오 코딩 전문가 그룹(Video Coding Experts Group, VCEG)과

ISO/IEC의 동화상 전문가 그룹(Moving Picture Experts Group, MPEG)이 공동으

로 조인트 비디오 팀(JVT)을 구성하고 표준화를 진행한 결과물

- 스트리밍 환경에 적합한 기술들이 추가된 확장(Extended) 프로파일 제공

* MPEG2-TS(Transport Stream)

- MPEG-2 시스템 (MPEG-2 Systems)는 MPEG-2 다중화하여 전송하기 위한 규격

- 이미지 ES 또는 음성 ES를 적당한 크기로 분할하여 패킷화한 것을 PES

(Packetized Elementary Stream)이라고 부른다.

- MPEG-2 시스템에서는 PES를 다중화 하여 전송 또는 저장하는 형식의 용도별로

프로그램 스트림 (Program Stream : PS)과 전송 스트림 (Transport Stream : TS)

의 2 종류가 정의되어 있다.

- PS는 DVD, TS는 디지털 방송 표준으로 많이 채용되고 있다.

 

3.3 library

* libavcodec

- libavcodec은 자유 소프트웨어이자 LGPL 라이선스가 걸린 오픈 소스 라이브러리

- 이 코덱은 영상 데이터와 음성 데이터를 인코딩하고 디코딩할 수 있다.

- C 언어로 구현

- FFmpeg 프로젝트의 한 부분을 차지하고 있으며 많은 자유 소프트웨어, 오픈 소

스 응용 프로그램들이 libavcodec을 사용하고 있다.

- 대부분의 영상/음성 코덱 구현

 

3.4 Streaming 지원 포맷

* Container Format

- 다양한 종류의 데이터 및 표준 데이터 압축 방법을 사용하여 압축된 데이터를

저장할 수 있는 파일 형식

- 컨테이너 파일은 다양한 종류의 데이터를 확인하고 정리할 수 있다.

- 컨테이너 포맷은 여러 스트리밍을 재생 치유하는 데 필요한 동기화 정보와 함께

음성, 동영상, 자막, 장( 챕터 ), 자막, 메타 데이터( 태그 ) 등을 지원한다.

* 동영상 스트리밍 지원 확장자

- mp4, mov, mpg, mpeg, wmv, wma, swf, asf, ksg, flv, mkv, tp, ts, rm, mts

- aiv, mpeg 같은 파일은 스트리밍 전송을 지원 못 하고 풀 전송을 지원하는데 해

당 동영상 파일을 100% 다 전송받고 재생한다.

 

3.5 Streaming 보안

보안 스트리밍 서비스는 동영상에 대한 URL 직접 접속을 차단하여 불법 관람자들로 인한 네트워크 부하, 불필요한 미디어 서버 유지 비용, 네트워크 운영 비용, 방송 품질 저하 등을 방지한다.

 

3.6 Adaptive Bitrate Streaming

* 사용자의 네트워크 속도에 따라 적합한 콘텐츠를 선택하여 재생

- 사용자 별 서비스 품질 다변화

- 대역폭 변동에 대한 품질개선 및 안정성 확보

* Apple : HTTP Live Streaming(HLS)

* Microsoft : HTTP Smooth Streaming(HSS)

* Adobe : HTTP Dynamic Streaming(HDS)

 

 

4. Streaming Server/Client

4.1 Streaming Server

* Streaming Server 역할

- RTP Server

RTP로 미디어 패킷들을 클라이언트에게 전송하는 역할을 한다. RTCP를 통해 클

라이언트의 수신 대역폭에 따라 전송률을 조정한다.

- RTSP Server

RTSP를 사용해서 사용자와 통신하는 역할을 한다. RTP가 단방향 통신인데 비

해, RTSP는 양방향 통신이다. 사용자는 RTSP를 통해 비디오 요청, 스킵, 멈춤과

같은 기능을 사용할 수 있다.

- Media Packetizer

오디오나 비디오와 같은 미디어파일을 그 파일의 포맷에 따라 네트워크로 전송

할 수 있는 패킷으로 쪼개는 역할을 한다.

- Packet Builder

Media Packetizer에서 쪼갠 미디어 데이터를 RTP 패킷으로 만드는 역할을 한다.

 

* Adobe Flash Media Server

* crtmpserver

* Erlyvideo

* Flazr - Java 구현

* FreeSWITCH RTMP media streaming

* haXeVideo - 프로그래밍 언어 haXe 로 작성된 다중 스레드 FLV 스트리밍 서버

* Helix Universal Server

- 리얼 네트웍스가 판매하고 RealServer의 후계 기종

- 전송 매체 종류 Real Media, Windows Media, Quick Time

- 지원 OS로는 Windows, Linux , FreeBSD , Solaris , HP-UX 등

* Netris iStream Video Server

* OneTeam Media Server

* Onlinelib VCS Video Communication Server (iPhone 지원을 포함)

* QuickTime Streaming Server

- 애플이 개발한 스트리밍 서버로 오픈 소스 Darwin Streaming Server를 기반

* Unreal Media Server

* WebORB Integration Server

* Windows Media Service

- 마이크로소프트가 제공하는 플랫폼으로 Windows NT Server 4.0,

Windows 2000 Server 용이 Windows Media Server 4.1 그리고 Windows

Server 2003 용이 Windows Media Server 9가 사용 되고 있다.

컨텐츠 개발 인코더 등도 무료로 배포되고 있다.

* Wowza Media Server

- Wowza Media Systems가 개발하고 있는 동영상 스트리밍 서버 .

- RTMP를 사용하여 Adobe Flash Player와 통신할 수 있지만 클라이언트 서버 간

의 원격 프로시저 호출도 지원한다.

 

4.2 open source

* Darwin Streaming Server

- 애플의 소스 공개 정책에 따라 윈도우즈와 매킨토시 양쪽을 모두 지원

- 소스까지 공개되어 있기 때문에 누구든지 무료로 설치 가능

- 동영상, MP3 등의 디지털미디어를 실시간으로 배포하고 라이브 이벤트를 실현시

킬 수 있으며, Linux, Solaris, Windows NT/2000 등 가장 대중적인 엔터프라이즈

급 플랫폼을 지원

* FFmpeg

- FFmpeg은 명령어를 직접 입력하는 방식으로 동작하며 여러가지 자유 소프트웨

어와 오픈 소스 라이브러리로 구성되어 있다.

- 라이브러리 중에는 libavcodec도 들어있으며 또, libavformat 라는 음성/영상 다

중화, 역다중화 라이브러리도 있다.

- 이 프로젝트의 이름은 MPEG 영상 표준화 그룹에서 유래했고, "mpeg" 앞에 붙

은 "FF"는 "fast forward"를 의미한다.

- 2011년 3월 13일에 FFmpeg의 개발은 개발 체제의 충돌로 ffmpeg.org와

libav.org로 분열했다.

* Red5 Media Server

- flash player 스트리밍이 가능하도록 하는 Open Source Flash Server

- Java 로 작성된 오픈 소스 서버

* SHOUTcast

- Winamp의 개발, 배포 알려져 있는 Nullsoft가 무상으로 제공

- Winamp와 SHOUTcast 서버의 조합으로 라이브 전송 가능

* VideoLAN Server

 

4.3 Streaming Client

* GStreamer

* Media Player Classic

* MPEG4IP

* MPlayer

* QuickTime

* RealPlayer

* Skype

* VLC media player

- VLC 미디어 플레이어 (VLC media player, Video LAN Client)은 크로스 플랫

폼 에서 동작하는 미디어 플레이어 이다. 많은 미디어 파일에 대한 코덱이 내장

되어있어 동영상 파일이나 음성 파일 등 많은 미디어 파일을 재생 표시할 수 있

다. GPL 하에 있는 무료 소프트웨어 이다

* Winamp

* Windows Media Player

* Xine

* MythTV via Freebox

 

5. Streaming 업체 및 기술 동향

5.1 국내 Streaming 개발 업체

* 솔루션박스

- 대용량 인터넷 서비스에 필요한 CDN 솔루션을 비롯해 클라우드 컴퓨팅 솔루션,

스토리지 가상화 솔루션, 부하분산솔루션 등을 공급

* CDNetworks

- 국내 콘텐츠 전송 네트워크(CDN) 시장 부동의 1위 기업

* 나우콤

- 인터넷 개인방송 아프리카 TV 운영

* 피어링 포털

- 멜론 음악 서비스, 싸이월드 배경음악, 다음 TV팟 스트리밍 서비스 등을 지원

* 디디오넷

- H.264 코덱을 기반으로 한 실시간 방송 솔루션 개발 공급업체

 

5.2 스트리밍 호스팅

* Gabia, 카페24, Godo, inames 등 호스팅 업체 대부분이 스트리밍 호스팅 제공

 

5.3 서비스 및 기술 동향

* 서비스 환경 변화

 

* 모바일 스트리밍 서비스

* 클라우드 기반의 스트리밍 서비스

* 대역폭 고려한 가변 품질 스트리밍 기술

- Adaptive Bit-Rate 스트리밍






Steaming 기술 이해.pdf






'Project > Streaming Server' 카테고리의 다른 글

H.264 자료 1  (0) 2012.06.16
멀티미디어 압축 형식  (0) 2012.06.13
Streaming - 인터넷 방송  (0) 2012.06.11
Streaming - iptv  (0) 2012.06.11
컨테이너 포맷  (0) 2012.06.11
Posted by linuxism
,