'dm365'에 해당되는 글 3건

  1. 2016.12.01 dm365 보드용 ffmpeg configuration
  2. 2016.12.01 rtspclient 만들기..
  3. 2016.11.24 DM365 보드에서 ffmpeg 설정

0. 목표

ffmpeg을 통해 다음의 입력 음원 소스를 alsa device로 출력한다.

- 입력 음원 소스 : rtsp://server/mediafile

* media format : mp3, wav, pcm

* 출력 포맷 : 16bit 8kHz Mono PCM


1. 기본 configure 및 build


#./configure --cross-prefix=arm-none-linux-gnueabi- --disable-decoders --disable-yasm --disable-encoders --enable-encoder='pcm_mulaw, pcm_s16le, pcm_s16be'  --enable-decoder='pcm_mulaw, mp3, pcm_s16le, pcm_s16be' --disable-protocols --disable-filters --disable-muxers --disable-demuxers --disable-parsers --arch=arm --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --enable-pthreads --disable-bsfs --disable-doc --prefix=${PWD}/../usr --disable-swscale --enable-ffmpeg --enable-ffplay --enable-protocol='rtsp, rtp,file' --enable-muxer='mp3, pcm-mulaw, rtsp, wav, alsa' --enable-demuxer='mp3, rtsp, pcm-mulaw, wav, alsa' --enable-bsf='mp3_header_decompress' --enable-outdev='alsa' --enable-indev='alsa' --extra-cflags='-I/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include' --extra-ldflags='-L/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/lib' --extra-libs='-lasound' --enable-filter='aresample' --arch=armv5te  --disable-runtime-cpudetect --disable-neon --disable-armv6 --disable-armv6t2 --enable-avresample --enable-hardcoded-tables


2. 실행

- local mp3 음원을 16bit 8kHz mono로 출력하기

* 타겟 보드에 ffmpeg을 복사해 넣고, 실행

# ./ffmpeg -i test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


- rtsp 서버에서 mp3를 스트리밍해서 16bit 8kHz mono로 출력하기

#./ffmpeg -i rtsp://server/test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


잘 된다.


다만, latency가 엄청나고, 시스템 부하가 좀 올라가면 출력 품질이 형편없다... 뭐 어차피 16bit 8kHz mono 출력이니 기대도 없다.

 

2016년 5월 4일 글..  http://antinuke.blog.me/220700909836

'이런저런 것들 > 리눅스' 카테고리의 다른 글

rtspclient 만들기..  (0) 2016.12.01
오픈스택 스위프트 스토리지 설치 최종 정리  (0) 2016.11.24
Swift Storage 설치 및 설정  (0) 2016.11.24
Swift 설치하기  (0) 2016.11.24
DM365 보드에서 ffmpeg 설정  (0) 2016.11.24
Posted by 켄아자씨
,

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

 

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

 

작업환경은 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 켄아자씨
,

0. 목표

ffmpeg을 통해 다음의 입력 음원 소스를 alsa device로 출력한다.

- 입력 음원 소스 : rtsp://server/mediafile

* media format : mp3, wav, pcm

* 출력 포맷 : 16bit 8kHz Mono PCM


1. 기본 configure 및 build


#./configure --cross-prefix=arm-none-linux-gnueabi- --disable-decoders --disable-yasm --disable-encoders --enable-encoder='pcm_mulaw, pcm_s16le, pcm_s16be'  --enable-decoder='pcm_mulaw, mp3, pcm_s16le, pcm_s16be' --disable-protocols --disable-filters --disable-muxers --disable-demuxers --disable-parsers --arch=arm --enable-cross-compile --target-os=linux --cc=arm-none-linux-gnueabi-gcc --enable-pthreads --disable-bsfs --disable-doc --prefix=${PWD}/../usr --disable-swscale --enable-ffmpeg --enable-ffplay --enable-protocol='rtsp, rtp,file' --enable-muxer='mp3, pcm-mulaw, rtsp, wav, alsa' --enable-demuxer='mp3, rtsp, pcm-mulaw, wav, alsa' --enable-bsf='mp3_header_decompress' --enable-outdev='alsa' --enable-indev='alsa' --extra-cflags='-I/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/include' --extra-ldflags='-L/home/ryu.seeyeol/dm365/ti-dvsdk_dm365-evm_4_02_00_06/linux-devkit/arm-none-linux-gnueabi/usr/lib' --extra-libs='-lasound' --enable-filter='aresample' --arch=armv5te  --disable-runtime-cpudetect --disable-neon --disable-armv6 --disable-armv6t2 --enable-avresample --enable-hardcoded-tables


2. 실행

- local mp3 음원을 16bit 8kHz mono로 출력하기

* 타겟 보드에 ffmpeg을 복사해 넣고, 실행

# ./ffmpeg -i test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


- rtsp 서버에서 mp3를 스트리밍해서 16bit 8kHz mono로 출력하기

#./ffmpeg -i rtsp://server/test.mp3 -acodec pcm_s16le -ac 1 -ar 8000 -f alsa ""


잘 된다.


다만, latency가 엄청나고, 시스템 부하가 좀 올라가면 출력 품질이 형편없다... 뭐 어차피 16bit 8kHz mono 출력이니 기대도 없다.

Posted by 켄아자씨
,