Live555는 RTSP 관련 기능을 쉽게 사용 할 수 있도록 도와주는 여러 클래스를 제공하는 오픈소스 라이브러리이다. 단, 이 라이브러리에는 미디어 데이터를 디코딩 하거나 인코딩 하는 기능은 없고, 단순히 수신, 전송과 관련 된 기능을 제공하니 미디어 데이터의 인,디코딩 기능을 이용하고 싶다면, FFmpeg이나 quick sync등의 다른 API를 이용해 해당 기능을 구현해야 한다.

 

이번 포스트에서는 Live555를 Visual Studio 2010에서 사용 할 수 있도록 빌드하는 과정을 설명할 예정이다.

 

먼저 빌드에 사용할 소스코드를 Live555에서 다운받아보자.

 

처음 Live555싸이트에 들어가면 위와 같은 화면이 보이는데 우리가 다운받아야 할 소스코드는 LIVE555 Streaming Media 이부분에 들어가 있다. 왼쪽 부분에 Live555  Media Server는 이 LIVE555 Streaming Media를 기반으로 해서 만들어진 콘솔 프로그램으로 로컬폴더의 파일을 읽어 RTSP로 전송하는 기능을 제공한다.

 

어쨋든 소스 코드는 Live555 Streaming Media 이 부분에 있으니 클릭해서 들어가보자

 

소스 코드 단락에 보면 .tar.gz 파일을 받으라고 되어 있는 here 부분을  누르면 소스코드, 샘플용 미디어 파일을 다운 받을 수 있는 링크로 이동한다.

 

 

 

뭐 이런 저런 파일들이 많이 있는데 그냥 live555-latest.tar.gz를 다운 받으면 되겠다. 참고로 Live555는  구버전의 소스코드를 제공하지 않고 가장 최신 버전의 소스코드만 다운 받을 수 있다. 이유는 모르겠다. 그냥 live555에서 그런다고 한다. 어차피 Live555의 LGPL라이선스 때문에 이 라이브러리를 활용하는 제품은 항상 최신버전의 Live555를 제공해야 하는 필요성도 있고하니.. 그냥 일단 최신버전의 소스코드를 다운 받자.

 

다운을 받아 소스코드를 압축 해제해 보면 소스폴더와 이런저런 파일들이 있다. make파일을 생성해 주는 bat파일도 있어서  것 같은데 이 포스트에서는 그냥 직접 Visual Studio 2010에서 프로젝트를 만들어가지고 빌드할 예정이다. (사실 내가 어떻게 make파일 쓰는지를 모름 ㅎㅎ)

 

따라서 일단 Visual studio 2010에서 솔루션을 하나 맹글자.

그리고나서 아래와 같이 소스코드를 담고 있는 폴더명을 따서 프로젝트를 추가해주자.

 

정적 라이브러리로 빌드할 거니까

윈도우 32 콘솔프로그램 -> 생성마법사에서 정적 라이브러리 체크

로 해서 정적 라이브러리 빌드용 파일을 만든다.

(미리 컴파일 된 헤더도 체크해제한다.)

 

취향에 맞게 DLL로 만들어도 뭐.. 무방하다.

 

 

 

아참.. 그 전에 일단 각 소스코드 폴더별로 간단히 설명을 해야 겠다.

 

 

먼저 Live555 에서 각종 기능을 제공하는 소스코드. 즉, 라이브러리로 빌드할 소스코드는

 

UsageEnvironment

BasicUsageEnvironment

groupsock

liveMedia

 

여기 들어 있는게 전부다.

이 폴더안에 들어 있는 소스코드는 정적라이브러리 빌드용 프로젝트로 빌드하면 되겠다.

그 외에

 

proxyServer

mediaServer

testProgs

 

는 콘솔 프로그램으로 Live555에서 만들어서 제공하는 프로그램의 소스코드이다.

따라서 이 소스파일들은 빌드할 때는 console프로그램으로 프로젝트를 만들어 빌드해야 한다.

 

WindowsAudioInputDevice에 들어 있는 소스코드는 정확히는 모르겠지만 윈도우 OS에 연결된 오디오 장비로부터 음성 데이터를 수신할 수 있도록 해주는 소스코드가 들어 있는 것 같다. 구지 빌드하지 않아도 된다.

 

어쨋든 아래와 같이 각 소스코드별로 프로젝트를 만들고 각 폴더안에 들어 있는 헤더와 소스코드를 몽창 넣어주자.

 

 

그 다음 각 폴더에 대해 아래와 같이 헤더의 위치를 찾을 수 있도록 Include path 를 지정해 준다.

포함시켜야 할 include path는 라이브러리용 소스코드에 들어 있는 헤더파일의 위치로 아래와 같다.

 

헤더파일 경로

$(SolutionDir)\BasicUsageEnvironment\include;

$(SolutionDir)\UsageEnvironment\include;

$(SolutionDir)\groupsock\include;

$(SolutionDir)\liveMedia\include;

 

이것으로 라이브러리의 빌드를 위한 설정은 모두 완료 되었다.

 

UsageEnvironment

BasicUsageEnvironment

groupsock

liveMedia

 

위 네가지 프로젝트를 모두 Debug모드 Release모드로 빌드하면, 다른 프로젝트에서도 이 라이브러리를 사용 할 수 있도록 lib파일이 생성된다. 빌드해 낸 이 라이브러리를 사용하기 위해서는 아래와 같이 헤더와 추가 종속성을 프로젝트 속성에서 지정해 주면 된다.

 

헤더파일 경로

$(SolutionDir)\BasicUsageEnvironment\include;

$(SolutionDir)\UsageEnvironment\include;

$(SolutionDir)\groupsock\include;

$(SolutionDir)\liveMedia\include;

 

라이브러리 패스

이전에 lib파일이 생성 된 폴더

 

추가종속성

liveMedia.lib
BasicUsageEnvironment.lib
groupsock.lib
UsageEnvironment.lib
wsock32.lib

 

유념 해야 할것은 추가 종속성에서 swock32.lib파일을 추가해 줘야 하는 것이다. 이 라이브러리는 소켓 동작과 관련된 기능을 제공하는 윈도우 기본 라이브러리로, 이 종속성이 있어야 프로그램이 정상적으로 빌드 된다.

 

 

Posted by 굿쟌
,