'live555'에 해당되는 글 1건

  1. 2016.12.01 rtspclient 만들기..

아오.. 하오 오래전에 깨작거려놓은거라 생각이 안나는데...

 

오디오 방송 서버와 클라이언트를 만들어야 할 일이 있어서 급히 뒤적거리고 뚝딱거려서 만들어 봤다..

 

작업환경은 ubuntu 14.04LTS 32bit version,

타겟은 dm365보드였는데... ti-dvsdk_dm365-evm_4_02_00_06 버젼이니 참조하고..

 

http://www.live555.com/liveMedia/ 에서 library 소스 가져다 dm365에 맞춰서 configuration 하고 빌드한 후 라이브러리 가져다 오디오만 처리하도록 만들었는데.. 간단한 음성 방송 송신/수신만 하면 되고, dm365로 구성한 보드에 오디오 path도 adpcm 밖에 없어서 구현 하다 중단한 것으로 기억하는데.. 중요한건.. rtsp 서버에 접속해서 플레이하면... ㅎㅎㅎ 동작은 한다.. ^^;;

 

rtsp 서버는 http://www.live555.com/mediaServer/ 에 있는 pre-built 실행파일을 받아서 사용했고 (윈도용, 리눅스용 다 있음.)

 

 

client (2).zip

암호는 본문 맨 아래에..

 

Makefile은... 부득이하게 fullpath 참조하도록 만들어진터라..(디렉토리명에 개발자 이름이...) 빼고.. 소스만 압축되어 있으며,그 내용은 대략 아래와 같으니 참조만.. (~는 /home/사용자계정 디렉토리)

 

CROSS_COMPILER_PREFIX=arm-none-linux-gnueabi-
PREFIX_DIR=~/usr

INCDIR=${PREFIX_DIR}/include
LIBDIR=${PREFIX_DIR}/lib

GPP=${CROSS_COMPILER_PREFIX}g++
GCC=${CROSS_COMPILER_PREFIX}gcc
STRIP=$(CROSS_COMPILER_PREFIX)strip

INC_LIVEMEDIA_DIR=-I${INCDIR}/liveMedia -I${INCDIR}/groupsock  -I${INCDIR}/BasicUsageEnvironment -I${INCDIR}/UsageEnvironment
INC_BASE_DIR=~/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include
LIB_BASE_DIR=~/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/lib

CFLAGS_BASE=-I. -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -Wall -DBSD=1 -I$(INC_BASE_DIR)
LFLAGS_BASE =-L$(LIB_BASE_DIR)
LDFLAGS_BASE=-lpthread -lasound ${LIBDIR}/libliveMedia.a ${LIBDIR}/libgroupsock.a ${LIBDIR}/libBasicUsageEnvironment.a ${LIBDIR}/libUsageEnvironment.a

CFLAGS=${CFLAGS_BASE} ${INC_LIVEMEDIA_DIR}

all: rtspclient

rtspclient: rtspclient.cpp server.c
 ${GPP} -g -o $@ rtspclient.cpp server.c $(CFLAGS_BASE) $(INC_LIVEMEDIA_DIR) -L$(LIBDIR) $(LFLAGS_BASE) $(LDFLAGS_BASE)

install: rtspclient
 $(STRIP) rtspclient
 cp rtspclient $(PREFIX_DIR)/bin/

clean:
 rm -f rtspclient

 

 

 

코드는... liveMedia 소스내의 testProgs 내의 파일들을 참조하고 여기저기서 구글링 해서 짜깁기 해서 만들어서 예쁘진 않고.. 작업한지 좀 지난지라 기억도 잘 안나서... 사용 방법은 빌드 후 나온 실행파일인 rtspclient를 target board에 넣고

 

./rtspclient 서버주소 만 해주면 되었던 걸로 기억..

 

live555MediaServer는 실행 파일이 있는 디렉토리를 /로 하고 이하의 디렉토리의 음원 파일의 이름을 그대로 url로 사용할 수 있다.

 

예를 들어.. 음원 서버가 192.168.100.99라고 하고, /home/antinuke/media_server 디렉토리 밑에 다음과 같이 파일이 구성되어있다면.. 서버의 실행은 antinuke@192.168.100.99:~/media_server/$ ./live555MediaServer & 이렇게 실행하면 되고..

 

+ home + antinuke + media_server + media_files + test.wav

                                               |                 + test1.wav

                                               |                 + test2.wav

                                               |                 + test3.wav

                                               + live555MediaServer

                                               + mp3_files + song1.mp3

                                                               + song2.mp3

 

 

클라이언트에서 접속 url은 rtsp://192.168.100.99/media_files/test.wav, 또는 rtsp://192.168.100.99/mp3_files/song1.mp3 와 같이 하면 된다.

 

단... 앞에도 얘기했듯... rtsp 기본 포트인 554로 live555MediaServer가 구동되었다면 포트를 생략해도 되지만, 8554로 구동되었으면, 주소뒤에 포트를 표시해주어야 한다. 즉, rtsp://192.168.100.99:8554/media_files/test.wav 혹은 rtsp://192.168.100.99:8554/mp3_files/song1.mp3 처럼 해야 한다.

 

첨부한 소스는 이 live555MediaServer가 실행되었을때 어느 포트로 구동되었는지 알 수가 없으므로, 자동으로 두 포트 모두 open해서 접속에 성공한 thread만 재생하고 실패한 thread는 바로 종료되도록 해놨다.. 귀차니즘으로 인한 잔머리... ㅎㅎ

 

일단 나만 참조할 메모지만 혹시 비슷한 걸로 고생하시는 분 있으면 쪼금이라도 참조라도 되었으면 해서..

 

 

압축파일 비번은 1234 ... 코드가 지저분해서 부끄럽기에.

Posted by 켄아자씨
,