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/76f/trackback
List of Articles
번호 제목 글쓴이 날짜sort 조회 수

[Fedora5]부트로더 설정하기

인증서문제 (modulus 비교)

FreeBSD SSH 접속 안되요

linux swap 용량 늘리기

tar 분할 압축 및 해제 및 특정 디렉토리만 압축

콘솔에 남는 메세지로그파일로 남기기

리눅스 - zip 압축 해제

리눅스 로그파일 관리 [로그파일 삭제하는 방법]

인터넷 속도 단위 (bps, cps)

usb 부팅 리눅스 만들기(knoppix)

FreeBSD 커널패닉 복구하기

rrdtool 컴파일시 에러 configure: error: Please fix the...

커널 컴파일 장애 처리 perl: warning: Please check that...

Cent OS-5.2 설치 문서 GUI

커널 2.6으로 업그레이드!「A to Z」

리눅스서버 장애처리및 삭제파일 복구

CentOS 설치후 기본언어를 한국어로 바꾸기

리눅스에서 베드섹터 검사명령어

리눅스서버 응급복구와 삭제파일 복구

포트 포워딩 도구 ipmasqadm file

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234