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/c7f/trackback
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
107 리눅스 - zip 압축 해제 ADMINPLAY 2009-07-25 24646
106 콘솔에 남는 메세지로그파일로 남기기 ADMINPLAY 2009-07-19 22229
105 tar 분할 압축 및 해제 및 특정 디렉토리만 압축 ADMINPLAY 2009-07-18 21658
104 linux swap 용량 늘리기 ADMINPLAY 2009-07-18 20966
103 FreeBSD SSH 접속 안되요 ADMINPLAY 2009-07-14 23280
102 인증서문제 (modulus 비교) ADMINPLAY 2009-07-08 21862
101 [Fedora5]부트로더 설정하기 ADMINPLAY 2009-07-08 20646
100 리눅스 vsftp의 root 접속문제 ADMINPLAY 2009-07-07 21182
99 보안서버구축시 아파치 컴파일 중 "can not be used when ... ADMINPLAY 2009-07-04 22440
98 리눅스로그파일삭제 어떤걸삭제하나요? ADMINPLAY 2009-07-02 20401
97 리눅스에서 일정기간 이상된 파일 삭제하기 ADMINPLAY 2009-07-02 22312
96 리눅스 쓸데없는 파일,로그파일 주기적으로 삭제하기 ADMINPLAY 2009-07-02 23524
95 아파치 모듈 mod_status file ADMINPLAY 2009-07-01 22010
94 net-snmp-5.3.2.3 ADMINPLAY 2009-07-01 20104
93 MRTG 설치 ADMINPLAY 2009-07-01 20219
92 tar.gz 특정 디렉토리에 압축풀기 ADMINPLAY 2009-06-29 24928
91 압축 : tar / gzip / jar / tbz 사용법 ADMINPLAY 2009-06-29 21285
90 [APM] 리눅스에서 Apache, PHP, MySQL 등 제거 방법 ADMINPLAY 2009-06-29 39388
89 오라클시작 ADMINPLAY 2009-06-26 18741
88 리눅스 파일 복구 명령 debugfs ADMINPLAY 2009-06-24 25455

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234