Skip to content

참고사이트1 : http://www.blackonsole.org/2009/07/install-ffmpeg-and-ffmpeg-php-on-centos.html
참고사이트2 : http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/

//2010-12-28 아래 내용을 정리한 파일을 첨부합니다.

1. 코덱설치 전 기본적으로 아파치와 php는 설치되어 있어야 함.
yum install httpd php php-mysql mysql-server gd gd-devel php-gd php-devel php-mcrypt php-mcrypt php-mhash php-mbstring php-bcmath php-pear php-mysql php-mbstring php-ncurses php-perl subversion ncurses-devel ruby automake autoconf libtool gcc make

2. 코덱 및 패키지 다운로드/설치
git : http://tezina.tistory.com/51
yasm : http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz
mplayer codec : http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20071007.tar.bz2
lame : http://biznetnetworks.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz
ffmpeg-php : http://jaist.dl.sourceforge.net/sourceforge/ffmpeg-php/ffmpeg-php-0.6.0.tbz2
libogg : http://downloads.xiph.org/releases/ogg/libogg-1.1.4.tar.gz
libvorbis : http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.3.tar.gz
armwb : http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
faac : http://sourceforge.net/projects/faac/files/faac-src/faac-1.28/faac-1.28.tar.gz/download
x264 : git clone git://git.videolan.org/x264.git

mkdir /usr/local/lib/codecs
mv essential-20071007/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

/etc/ld.so.conf 에 /usr/local/lib 추가
ldconfig -v

yasm,amrwb,lame,libogg 컴파일 및 설치
ldconfig -v
libvorbis,faac,x264 컴파일 및 설치
ldconfig

3. ffmpeg 설치
./configure --enable-avfilter --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_32 --enable-libfaac --enable-nonfree --enable-filter=movie --enable-filter=overlay --enable-filter=main_h-overlay_h-10 --enable-libx264 --enable-gpl
make && make install


4. 코덱 링크
ln -s /usr/local/lib/libavformat.so.52 /usr/lib/libavformat.so.52
ln -s /usr/local/lib/libavcodec.so.52 /usr/lib/libavcodec.so.52
ln -s /usr/local/lib/libavutil.so.50 /usr/lib/libavutil.so.50
ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0
ln -s /usr/local/lib/libamrwb.so.3 /usr/lib/libamrwb.so.3


5. ffmpeg-php 설치
vi ffmpeg_frame.c 수정
:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32

phpize
./configure
make && make install

vi /etc/php.ini 에 extension추가
extension=ffmpeg.so

6. segmenter 설치
svn co http://svn.assembla.com/svn/legend/segmenter/
gcc -Wall -g segmenter.c -o segmenter -lavformat -lavcodec -lavutil -lm -lz -lfaac -lmp3lame -lx264 -lfaad
생성된 segmenter 파일을 /usr/local/bin/ 로 복사

segmenter 실행 시 나오는 사용법
Usage: segmenter <input MPEG-TS file> <segment duration in seconds> <output MPEG-TS file prefix> <output m3u8 index file> <http prefix> [<segment window size>]

7. rtspdump 설치
git clone git://bisqwit.iki.fi/rtspdump.git



작업의도
mms로 서비스되는 동영상/오디오를 아이폰에서 자체 스트리밍으로 볼수 있도록 하기 위함

성공한 동영상 리스트리밍 코드
audio+video 모두 있을 경우
php rtspdump-lite.php -r mms://xxx.xxx.xxx.xxx/ -o - | ffmpeg -i - -acodec libfaac -ac 2 -vcodec libx264 -b 300k -ab 64k -async 1 -f mpegts -threads 2 -vpre hq -vpre fastfirstpass - | segmenter - 1 onair onair.m3u8 http://192.168.0.1/live/ 3

audio만 있을 경우
php rtspdump-radio.php -r mms://xxx.xxx.xxx.xxx/ -o - |
ffmpeg -i - -acodec libfaac -ab 64k -vn -f mpegts - |
segmenter - 20 onfm onfm.m3u8 http://192.168.0.2/live/ 6


그런데 6번의 segmenter을 컴파일해서 설치를 하면 audio와 video가 모두 있어야지 ts파일로 자를 수 있다.
하지만 라디오 같은 audio만 있는 소스일 경우엔 오류가 나면서 실행이 되지 않는다.

한참을 찾아 헤매다가 오디오만 있어도 segment할 수 있는 패치를 확인해서 다시 컴파일 해서 성공.
audio만 있어도 segment가능한 segmenter.c 패치 (patch -p0 < segmenter.c.patch)
http://urlgrey.net/drop/segmenter-withaudio-20100329.tar.gz 혹시 몰라서 아래 첨부함.
//2010-12-28 추가
아래패치는 segmenter 사용시 23시간 정도 경과할 경우 더이상 파일을 자르지 못하고 멈추게 되어 더이상 스트리밍을 하지 못하게 되는 경우가 있다.(segmenter 32bit rollover 가 발생하는 경우)
이럴때는 아래 첨부된 파일로  다시 컴파일해서 segmenter 파일을 생성해서 사용하면 된다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/76945/9fa/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
267 [CentOS] ffmpeg 설치 ADMINPLAY 2012-02-07 24529
266 CentOS ffmpeg yum install ADMINPLAY 2012-02-07 25634
265 iPhone에서 streaming video 서비스 ADMINPLAY 2012-02-07 20960
264 Http Live Streaming 으로 아이폰 동영상 서비스 ADMINPLAY 2012-02-07 29144
263 HTTP Live Streaming 구축 ADMINPLAY 2012-02-07 33202
» FFMpeg + rtspdump + segmenter 를 이용한 iPhone 스트리... ADMINPLAY 2012-02-07 31415
261 장비를 복제해서 옮겼을 경우 네트워크가 eth0_rename 되... ADMINPLAY 2012-01-31 25851
260 [FreeBSD]CPU, 메모리, HDD확인 및 네트워크 설정 ADMINPLAY 2012-01-17 25140
259 FreeBSD CPU 개수 확인 등.(mptable, sysctl) ADMINPLAY 2012-01-16 22327
258 CentOS 4, CentOS 5, CentOS 6 에 NTFS 파일시스템 마운트... ADMINPLAY 2012-01-16 27092
257 hdparm 세부옵션 ADMINPLAY 2012-01-16 58385
256 mrtg를 이용한 시스템자원 모니터링 ADMINPLAY 2012-01-16 39129
255 linux adduser 시 copydir(): preserving permissions 오... ADMINPLAY 2012-01-16 23276
254 3Ware Controller Problem Determination Procedures (레... ADMINPLAY 2012-01-16 33463
253 DRBD Network Mirroring ADMINPLAY 2012-01-16 20001
252 DRBD(Distributed Replicated Block Device) 에 대해서 ADMINPLAY 2012-01-16 23796
251 그누보드4와 MySQL5를 연동시 초기 관리자 계정이 생성되... ADMINPLAY 2012-01-16 18674
250 MS-DOS 배치파일 문법 ADMINPLAY 2012-01-16 25448
249 dd 명령어 ADMINPLAY 2012-01-16 17636
248 insmod 와 modprobe 의 차이점 ADMINPLAY 2012-01-16 20860

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234