RED5 + FFMPEG + FFserver 스트리밍 서버 구축하기 > UCC,스트리밍 관련 자료

본문 바로가기

사이트 내 전체검색

  • PC

  • UCC,스트리밍 관련 자료

    RED5 + FFMPEG + FFserver 스트리밍 서버 구축하기

    페이지 정보

    작성자 로빈아빠 작성일12-07-12 19:41 조회9,013회 댓글0건

    본문

    Posted on 2009/02/25 16:19
    Filed Under 리눅스기술문서/서버관련 조회수: view 5044

    RED5 + FFMPEG + FFserver 스트리밍 서버 구축하기

    작성자 : 서진우(
    alang@syszone.co.kr)
    작성일 : 2009년 1월 5일

    4.1 FFMPEG로 인코딩 환경 구축하기 

    - 기본 프로그램 설치

    # yum install ruby
    # yum install ncurses-devel*
    # yum install lame
    # yum install libogg
    # yum install libvorbis
    # yum install flvtool2
    # yum install ffmpeg

    - 코덱 설치

    # wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2
    # bunzip2 essential-20061022.tar.bz2
    # tar xvf essential-20061022.tar
    # mkdir /usr/local/lib/codecs/
    # mv essential-20061022/* /usr/local/lib/codecs/
    # chmod -R 755 /usr/local/lib/codecs/

    # vi /etc/ld.so.conf
    # ldconfig

    - ffmpeg 기본 사용법

    AVI -> FLV

    # ffmpeg -i onestar.avi -ar 22050 -ab 32 -f flv -s 640x480 onestar.flv | flvtool2 -U stdin onestar.flv

    -i             : input file name
    -ar          : audio sampling rate in HZ
    -ab          : audio bit rate in kbit/s
    -f             : output format
    -s             : output dimension

    FLV -> JPG

    # ffmpeg -i test.flv -an -r 1 -y -s 640x480 test%d.jpg

    -i             : input file name
    -an         : disable audio 
    -r            : fps
    -y           : overwrite file
    -s            : output dimension

    Particular frame to JPG

    # ffmpeg -i test.flv -an -ss 00:00:10 -t 00:00:01 -r 1 -y -s 640x480 test%d.jpg

    -ss          : recored start time
    -t            : record end time last for

    - ffmpeg 실무 사용법

    ffmpeg를 이용하여 avi 파일을 flv로 변환 한다.

    # ffmpeg -i onestar.avi -b 512k -ar 22050 -ab 128k -r 24 -s 400x300 onestar.flv
     
    or

    # ffmpeg -i "onestar.avi" -vcodec flv -f flv -r 29.97 -s 400x300 -aspect 4:3 -b 320k -g 160 -cmp 2 -subcmp 2 -mbd 2 -flags +aic+cbp+mv0+mv4+trell -ac 1 -ar 22050 -ab 128k "onestar.flv"

    - FLV에 메타데이터 넣기 (스트리밍 보기-중간 구간 바로 보기)

    # flvtool2 -U onstar.flv

    - 동영상 썸네일 만들기

    # ffmpeg -y -i onestar.avi -vframes 1 -ss 00:00:02 -an -vcodec png -f rawvideo -s 400x300 onestar.png

    # ffmpeg  -itsoffset -4  -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg

    - 동영상에 자막 넣기

    동영상을 flv 로 변환할때 자막을 같이 넣을 경우 기존의 ffmpeg로는 자막 포함 기능이 
    제공되지 않는다. 자막을 포함하여 인코딩을 할 수 있는 프로그램으로 mencoder이 있다.
    설치는 yum으로 쉽게 가능하다.

    # yum install mencoder

    설치 후 자막의 언어 설정을 아래와 같이 한다.

    $ vi ~/.mplayer/mencoder.conf
    -------------------------------------------------------------------------
    font="/usr/share/fonts/korean/TrueType/gulim.ttf"
    subfont-text-scale=3
    subcp=cp949
    -------------------------------------------------------------------------

    이제 mencoder로 자막을 포함해서 인코딩을 한다.

    $ mencoder -noodml [avi파일]  -o [flv파일]  -sub $1.smi -of lavf -oac mp3lame -lameopts abr:br=128 -ovc lavc -lavcopts vcodec=flv:vbitrate=512:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 44100 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vf-add scale=400:300


    - 웹 FLV_Player 연동하기

    웹에서 FLV 파일을 스트리밍으로 볼수 있는 Player는 여러가지가 있다.

    * UCCUP에서 제공하는 Player - http://www.uccup.kr
    http://flowplayer.org/download.html
    * GRZ_JWMediaPlayer

    - UCCUP Player 연동하기

    아래 구문중 flv 파일명과 png 파일명을 수정 후 HTML 문서에 붙여 넣는다. 
    flv,png 파일은 [UCCUP설치경로]/SERVICE 디렉토리 밑에 복사해 둔다.

    <embed src="http://syszone.co.kr/uccup/UCCUp.swf?file=http://syszone.co.kr/uccup/file.php?f=onestar.flv&previewImage=http://syszone.co.kr/uccup/file.php?f=onestar.png&bufferTime=3&bgColor=-1
    width="400" height="300" scale="noscale" bgcolor="#ffffff" type="application/x-shockwave-flash" allowFullScreen="true" 
    allowScriptAccess="always" allowNetworking="all" pluginspage="
    http://www.macromedia.com/go/getflashplayer">
    </embed>

    - GRZ_JWMediaPlayer 연동하기

    아래는 textcube의 플러그인으로 연동된 GRZ_JWMediaPlayer를 이용하는 방법이다.

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="425" height="340">
    <param name="movie" value="/plugins/GRZ_JWMediaPlayer/mediaplayer.swf"/>
    <param name="allowfullscreen" value="true"/>
    <param name="wmode" value="transparent"/>
    <param name="flashvars" value="width=425&height=340&thumbsinplaylist=true&displayheight=320&overstretch=true&logo=&searchbar=false&linkfromdisplay=true&linktarget=_blank&file=/plugins/GRZ_JWMediaPlayer/mkpl.php?list=1|%5bhttp%5dblog.syszone.co.kr%2fattach%2f1%2f1466599573.flv|alang.flv+%289.64+MB%29|||||%5bhttp%5dblog.syszone.co.kr|"/>
    <!--[if !IE]> <-->
    <object type="application/x-shockwave-flash" transparent="yes" data="/plugins/GRZ_JWMediaPlayer/mediaplayer.swf" flashvars="thumbsinplaylist=true&displayheight=320&overstretch=true&logo=&searchbar=false&linkfromdisplay=true&linktarget=_blank&file=/plugins/GRZ_JWMediaPlayer/mkpl.php?list=1|%5bhttp%5dblog.syszone.co.kr%2fattach%2f1%2f1466599573.flv|alang.flv+%289.64+MB%29|||||%5bhttp%5dblog.syszone.co.kr|" width="425" height="340">
    <p>
    <a href="/plugins/GRZ_JWMediaPlayer/mediaplayer.swf">[Flash]</a></p>
    </object>
    <!--> <![endif]-->

    </object>

    - FlowPlayer 연동하기

    기본 연동법 
    ------------------------------------------------------------------------------------
    <object type="application/x-shockwave-flash" data="[your site]/FlowPlayer.swf"
    width="320" height="263" id="FlowPlayer">

      <param name="allowScriptAccess" value="sameDomain"/>
      <param name="movie" value="[your site]/FlowPlayer.swf"/>
      <param name="quality" value="high"/>
      <param name="scale" value="noScale"/>
      <param name="wmode" value="transparent"/>
      <param name="flashvars" value="baseURL=[base URL]&amp;videoFile=movie.flv
      &amp;autoPlay=false&amp;loop=false&amp;autoBuffering=false
      &amp;splashImageFile=movie.png"/>
    </object>
    --------------------------------------------------------------------------------------
    or 
    --------------------------------------------------------------------------------------
    <script type="text/javascript" src="flowplayer-3.0.2.min.js"></script>
    <script>
    flowplayer("player", "./flowplayer-3.0.2.swf");

    </script>

    <a href="http://syszone.co.kr/yaejin/data/11.flv" style="display:block;width:400px;height:300px" id="player">

    </a>
    --------------------------------------------------------------------------------------
    or 
    --------------------------------------------------------------------------------------
    <script type="text/javascript" src="flowplayer-3.0.2.min.js"></script>
    <script>
    flowplayer("player", "./flowplayer-3.0.2.swf", {
        clip: {
            url: 'http://syszone.co.kr/yaejin/data/11.flv',
            autoPlay: false,


            onStart: function(clip) {
                pageTracker._trackPageview("configuration demo: " + clip.url);
            }
        }


    });

    </script>

    <a href="http://syszone.co.kr/yaejin/data/11.flv" style="display:block;width:400px;height:300px" id="player">
    <img src="
    http://syszone.co.kr/yaejin/data/11.png" border=0 alt="Play this video" />
    </a>
    ---------------------------------------------------------------------------------------
    or (youtube 방식의 동영상 라이브러리 구현)
    ---------------------------------------------------------------------------------------
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
            "
    http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


    <c:if test="true">
    <!-- include desired tools -->
    <script src="
    http://syszone.co.kr/yaejin/jquery.min.js"></script>
    <script src="
    http://syszone.co.kr/yaejin/flowplayer-3.0.2.min.js"></script>
    </c:if>
    <script src="
    http://syszone.co.kr/yaejin/flowplayer.playlist-3.0.1.min.js"></script>

    <!-- player / playlist styling -->
    <style>
    /* player style */
    /* container has a background image */
    a.player {
            margin-top:40px;
            display:block;
            background:url(
    http://syszone.co.kr/yaejin/img/splash.png) no-repeat;
            width:425px;
            height:298px;
            padding:0 126px 75px 127px;
            text-align:center;
            color:#fff;
            text-decoration:none;
            cursor:pointer;
    }

    /* splash image */
    a.player img {
            margin-top:115px;
            border:0;
    }


    #player {
            float:left;
    }

    /* playlist style */
    #playlist {
            width:300px;
            height:380px;
            overflow-y:auto;
            overflow-x:hidden;
            border:1px solid #ccc;
            padding:4px 10px 12px 10px;
            background-color:#efefef;
            margin-top:20px;
            float:left;
    }

    /* playlist entry */
    #playlist a {
            display:block;
            width:260px;
            height:60px;
            padding:7px;
            background-color:#fff;
            border:1px solid #ccc;
            font:11px "bitstream vera sans", "lucida grande",verdana;
            text-decoration:none;
            margin-top:7px;
            color:#666;
    }

    /* different states of a playlist entry */
    #playlist a:hover {
            background-color:#ffc;
    }

    #playlist a.progress {
            background-color:#efefef;
    }

    #playlist a.playing {
            border:1px solid #666;
            background-color:#ffc;
    }

    #playlist a.paused {
            border:1px solid #666;
            background-color:#ffc;
    }

    /* elements inside playlist entry */
    #playlist a img {
            border:0;
            float:left;
            margin-right:10px;
    }

    #playlist a strong {
            color:blue;
            padding-bottom:5px;
    }

    #playlist a em {
            border:0;    
            float:left;
            margin-right:10px;
            background:url(
    http://syszone.co.kr/yaejin/img/clock.gif) no-repeat 0 50%;
            padding-left:20px;
            color:#333;
            font-style:normal;
            margin-top:10px;
    }

    </style>


    <!-- javascript setup. pretty simple stuff -->
    <script>
    $(function() {

            // setup player
            $f("player", "flowplayer-3.0.2.swf", {

                    clip: {baseUrl: 'http://syszone.co.kr/yaejin/data'}

            // playlist plugin
            }).playlist("#playlist");

    });
    </script>


    <!-- player container -->
    <a id="player" class="player plain">
            <img src="
    http://syszone.co.kr/yaejin/img/play.png" />
    </a>

    <!-- the playlist. simple HTML controlled with CSS -->

    <div id="playlist">

    <a href=071202-탄생1.flv>
    <img src=http://syszone.co.kr/yaejin/data/071202-탄생1.png />
    <strong>071202-탄생1</strong><br /><br>
    </a>

    <a href=071202-탄생2.flv>
    <img src=http://syszone.co.kr/yaejin/data/071202-탄생2.png />
    <strong>071202-탄생2</strong><br /><br>
    </a>

    .
    .
    </div>
    <!-- let the rest of the page float normally -->
    <br clear="all" />
    ------------------------------------------------------------------------------------


    - Encoding 관련 스크립트 제작

    ffmpeg를 이용하여 avi 파일을 flv로 변환하는 스크립트

    # vi /usr/bin/ffmpeg_encoder.sh [filename] [geometry]
    -----------------------------------------------------------------------------------
    #!/bin/sh

    if [ $# -lt 2 ]
    then
    echo -n "using : ffmpeg_encoder.sh <filename> <geometry> ( movie 400x300 )
    ";

    exit;
    fi

    ffmpeg -i $1.avi -b 512k -ar 22050 -r 24 -ab 128k -s $2 $1.flv 
    ffmpeg -y -i $1.avi -vframes 1 -ss 00:00:02 -an -vcodec png -f rawvideo -s $2 $1.png
    flvtool2 -U $1.flv
    echo -n "--------------------------------------------------------
    $1.avi completed $1.flv to encoding..!!
    --------------------------------------------------------
    ";

    ----------------------------------------------------------------------------------

    mencoder를 이용하여 avi파일과 smi 자막파일을 flv 파일로 변환하는 스크립트

    # vi /usr/bin/mencoder_encoder.sh 
    ----------------------------------------------------------------------------------
    #!/bin/sh
    if [ $# -lt 3 ]
    then
    echo -n "using : mencoder_encoder.sh <filename> <x_geometry> <y_geometry> ( movie 400 300 )
    ";
    exit;

    fi

    mencoder -noodml $1.avi -o $1.flv -sub $1.smi -of lavf -oac mp3lame -lameopts abr:br=128 -ovc lavc -lavcopts vcodec=flv:vbitrate=512:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 44100 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vf-add scale=${2}:${3}
    ffmpeg -y -i $1.avi -vframes 1 -ss 00:00:02 -an -vcodec png -f rawvideo -s ${2}x${3} $1.png
    flvtool2 -U $1.flv
    echo -n "--------------------------------------------------------
    $1.avi completed $1.flv to encoding..!!
    --------------------------------------------------------
    ";
    ---------------------------------------------------------------------------------

    디렉토리내 flv 파일을 UCCUP Player에서 인식할 수 있는 HTML 코드로 변환하는 스크립트

    # vi /usr/bin/convert_flvhtml.sh
    --------------------------------------------------------------------------------
    #!/bin/sh

    rm -f source.html
    ls -1 *.flv | sed -e 's/\.flv//g' > filelist

    A=`cat filelist`

    for B in `echo $A`
    do

    echo -n "
    <embed src=\"
    http://syszone.co.kr/uccup/UCCUp.swf?file=http://syszone.co.kr/uccup/file.php?f=${B}.flv&previewImage=http://syszone.co.kr/uccup/file.php?f=${B}.png&bufferTime=3&bgColor=-1\
    width=400 height=300 scale=noscale bgcolor=#ffffff type=application/x-shockwave-flash allowFullScreen=true
    allowScriptAccess=always allowNetworking=all pluginspage=http://www.macromedia.com/go/getflashplayer>
    </embed>
    <p>
    " >> source.html

    done
    ---------------------------------------------------------------------------------



    4.2 RED5 를 이용한 스트리밍 서비스 환경 구축하기 

    - Red5 설치하기

    ant download :  http://ant.apache.org/bindownload.cgi
    red5 download : http://osflash.org/red5
    jdk download : http://java.sun.com

    각 사이트에서 최신 패키지를 다운받는다.

    apache-ant-1.7.1-bin.tar.gz
    red5-0.7.0.tar.gz
    jdk-6u11-linux-x64-rpm.bin

    - JDK 설치하기

    # chmod 755 jdk-6u11-linux-x64-rpm.bin 
    # ./jdk-6u11-linux-x64-rpm.bin 
    --------------------------------------------------------------------------------
    .
    .

    Do you agree to the above license terms? [yes or no]
                  yes
    Unpacking...
    Checksumming...
    Extracting...
    UnZipSFX 5.50 of 17 February 2002, by Info-ZIP (
    Zip-Bugs@lists.wku.edu).
      inflating: jdk-6u11-linux-amd64.rpm  
      inflating: sun-javadb-common-10.4.1-3.1.i386.rpm  
      inflating: sun-javadb-core-10.4.1-3.1.i386.rpm  
      inflating: sun-javadb-client-10.4.1-3.1.i386.rpm  
      inflating: sun-javadb-demo-10.4.1-3.1.i386.rpm  
      inflating: sun-javadb-docs-10.4.1-3.1.i386.rpm  
      inflating: sun-javadb-javadoc-10.4.1-3.1.i386.rpm  
    준비 중...                  ########################################### [100%]

    .
    .
    Press Enter to continue.....
    Done.

    /usr/java 디렉토리 밑에 설치 완료 .

    - Ant 설치하기

    # tar xzvf apache-ant-1.7.1-bin.tar.gz 
    # mv apache-ant-1.7.1 /usr/local/ant

    - Red5 설치하기

    # mkdir /usr/local/red5
    # tar xzvf red5-0.7.0.tar.gz -C /usr/local/red5

    - 환경설정하기

    # vi /etc/profile.d/ant_java.sh 
    -----------------------------------------------------------------------------
    #!/bin/sh

    export JAVA_HOME=/usr/java/default
    export JAVA_VERSION=1.6
    export ANT_HOME=/usr/local/ant
    export PATH=${ANT_HOME}/bin:${JAVA_HOME}/bin:$PATH

    ----------------------------------------------------------------------------

    # source /etc/profile.d/ant_java.sh 
    # java -version
    java version "1.6.0_11"
    Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
    Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode)

    - RED5 컴파일 및 데몬 시작하기

    http://osflash.org/red5 에서 final 바이너리 패키지를 받은 경우 별도의 컴파일
    없이 바로 실행이 가능하다.

    # cd /usr/local/red5
    # sh red5.sh

    svn를 통해 코드를 받은 경우 아래와 같이 컴파일을 해줘야 한다.

    # cd /usr/local
    # svn co 
    http://red5.googlecode.com/svn/java/server/trunk red5src
    # cd red5

    방법1 :

    # cd /usr/local/red5src

    # ant server &
    # /usr/local/ant/bin/ant 
    # cp -a /usr/local/red5src/dist /usr/local/red5
    # cd /usr/local/red5
    # ./red5.sh &

    방법2 :

    # cd /usr/local/red5src
    # make
    # make install

    # cd /usr/lib/red5
    # ./red5.sh &

    방법 3 :

    # cd /usr/local/red5src
    # ant prepare
    # ant build

    Target "build" does not exist in the project "RED5". 라는 에러가 발생했을 경우

    # ant
    or
    # ant -f build.xml
    # cp -a dist /usr/local/red5
    # cd /usr/local/red5
    # sh red5.sh &

    ;; 3번 권장함


    최신버전으로 컴파일 시 간혹 아래와 같은 에러가 발생하는 경우가 있다.
    ------------------------------------------------------------------------
    .
    [ivy:resolve]           :: spring#spring-support;2.0.8: not found
    [ivy:resolve]           :: javax#jsp-api;2.1: not found
    [ivy:resolve]           :: red5#xercesImpl;2.9.0: not found
    [ivy:resolve]           :: red5#groovy;1.0: not found
    [ivy:resolve]           :: commons#commons-lang;2.3: not found
    [ivy:resolve]           :: tomcat#jasper;6.0.14: not found
    [ivy:resolve]           ::::::::::::::::::::::::::::::::::::::::::::::
    [ivy:resolve]
    [ivy:resolve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS

    BUILD FAILED
    /usr/local/red5-0.7.0/build.xml:205: The following error occurred while executing this line:
    /usr/local/red5-0.7.0/build.xml:221: The following error occurred while executing this line:
    /usr/local/red5-0.7.0/build.xml:165: impossible to resolve dependencies:
            resolve failed - see output for details 
    ------------------------------------------------------------------------


    위 문제는 ivy 라는 패키지 관리 도구에서 red5 컴파일 시 필요한 패키지를 사전에 정의된
    패키지 저장소에서 자동으로 다운로드 받게 되는데, 필요한 패키지를 찾을 수 없을때 발생한다. 
    ivy.xml 와 ivysettings.xml 파일에 다운로드 경로 정보가 있는데, 이것이 변동된 경우 발생하니

    ivysettings.xml 에서 http://red5.googlecode.com/svn/trunk/repository/ 부분을 
    http://red5.googlecode.com/svn/repository 로 수정하거나 최신 해당 파일을 다운로드 받으면
    된다.


    - Init script 만들기

    # vi /etc/rc.d/init.d/red5
    --------------------------------------------------------------------------
    #!/bin/sh
    #
    # Startup script for Red5 flash streaming server
    #
    # chkconfig: 345 81 81
    # description: RED5 by java
    #
    # processname: java (unfortunately)
    # pidfile: /var/run/red5.pid
    # config: /etc/red5.conf

    # Source function library.

    . /etc/rc.d/init.d/functions

    PID_FILE=/var/run/red5.pid
    PID=`ps ax |grep java|grep red5|awk '{print $1;}'`
    RETVAL=0

    start() {
    echo -n $"Starting $DESCR: "
    # daemon java $OPTIONS > /dev/null 2>&1 &

    export ANT_HOME=/usr/local/ant
    export JAVA_HOME=/usr/java/default
    export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    exec $JAVA_HOME/bin/java -Djava.security.manager -Djava.security.policy=/usr/local/red5/conf/red5.policy -cp /usr/local/red5/red5.jar:conf:/usr/local/red5/conf org.red5.server.Standalone > /dev/null 2>&1 & RETVAL=$?

    [ $RETVAL = 0 ] && touch /var/lock/subsys/red5 && echo $!>$PID_FILE && echo_success
    echo
    return $RETVAL
    }
    stop() {
    echo -n $"Stopping $DESCR: "
    #killproc $PID_FILE
    [[ $PID != "" ]] && success && kill $PID || failure
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/red5 $PID_FILE
    }

    # See how we were called.
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    stop
    sleep 3
    start
    ;;
    *)
    echo $"Usage: $DESCR {start|stop|restart}"
    exit 1
    esac

    exit $RETVAL
    ----------------------------------------------------------------------------

    # chmod 755 /etc/rc.d/init.d/red5
    # chkconfig --add /etc/rc.d/init.d/red5

    # /etc/rc.d/init.d/red5 start


    - red5 spec file
    ----------------------------------------------------------------------------
    Summary: Red5 Server
    Name: red5
    Version: 0.7.0
    Release: 1
    Source0: %{name}-%{version}.tar.gz
    License: LGPL
    Group: Applications/Networking
    BuildRoot: %{_builddir}/%{name}-root
    %description
    The Red5 open source Flash server allows you to record and stream video to the Flash Player.
    %prep
    %setup -q
    %build
    ant dist-installer
    %install
    cp dist $RPM_BUILD_ROOT
    %clean
    rm -rf $RPM_BUILD_ROOT
    %files
    %defattr(-,root,root)
    /usr/local/bin/red5.init
    %doc doc/changelog.txt
    ------------------------------------------------------------------------------

    - Red5를 이용한 flv 동영상 스트리밍 Player 환경 구성하기

    flash_media_player.zip 파일을 다운로드 받는다.
    http://www.jeroenwijering.com/upload/flash_media_player.zip

    # cp mediaplayer.html index.html

    # vi index.html
    ------------------------------------------------------------------------------
    <html>
    <head>

    <script type="text/javascript" src="swfobject.js"></script>


    </head>
    <body>


    <p id="player2"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p>
    <script type="text/javascript">
            var s2 = new SWFObject("mediaplayer.swf","playlist","640","640","9");
            s2.addParam("allowfullscreen","true");
            s2.addVariable("file","playlist.xml");
            s2.addVariable("displayheight","480");
            s2.addVariable("backcolor","0x000000");
            s2.addVariable("frontcolor","0xCCCCCC");
            s2.addVariable("lightcolor","0x996600");
            s2.write("player2");
    </script>


    </body>
    </html>
    ----------------------------------------------------------------------------------

    # vi playlist.xml
    ----------------------------------------------------------------------------------
    <playlist version="1" xmlns="
    http://xspf.org/ns/0/">
            <trackList>
            <track>
            <title>Resident.Evil.Degeneration.2008</title>
            <creator>alang</creator>
            <location>rtmp://syszone.co.kr/oflaDemo/</location>
            <identifier>residentevil.flv</identifier>
            <meta rel="type">rtmp</meta>
            </track>
            </trackList>

    .
    .

    </playlist>
    ----------------------------------------------------------------------------------


    위의 <location>rtmp://syszone.co.kr/oflaDemo/</location> 에 해당 red5 streams 디렉토리
    경로를 지정한다.

    기본 경로는 [RED5_PATH]/webapps/oflaDemo/streams 디렉토리 밑에 flv 파일을 넣어두면된다.

    - RED5와 OpenLaszlo를 이용한 스트리밍 환경 구축하기

    http://www.openlaszlo.org 에서 최신 패키지를 다운받는다.

    최신 개발 패키지  : http://download.openlaszlo.org/nightly/trunk


    # tar xzvf openlaszlo-4.2.0-unix.tar.gz
    # mv lps-4.2.0 /usr/local/lps
    # cd /usr/local/lps/Server/tomcat-5.0.24/bin
    # ./startup.sh 
    ----------------------------------------------------------------------------------
    Using CATALINA_BASE:   /usr/local/lps/Server/tomcat-5.0.24
    Using CATALINA_HOME:   /usr/local/lps/Server/tomcat-5.0.24
    Using CATALINA_TMPDIR: /usr/local/lps/Server/tomcat-5.0.24/temp
    Using JAVA_HOME:       /usr/java/default

    ----------------------------------------------------------------------------------

    http://domain:8080/lps-4.2.0/demos/

    # cd /usr/local/lps/Server/lps-4.2.0/demos/videolibrary
    # vi videolibrary.lzx 
    ----------------------------------------------------------------------------------
    <include href="av/videoutils.lzx"/> -> 삭제

    .
    .
        <dataset name="ds_library"
            src="http:videolibrary.jsp?method=getLibrary"
            request="true"
        />

    이 부분을 ..

        <dataset name="ds_library"
            src="
    http://192.168.123.2:8080/lps-4.2.0/demos/videolibrary/videolibrary.jsp?method=getLibrary"
            request="true"
        />

    으로 ..


        <rtmpconnection id="rtc"
            autoconnect="true"
            debug="true"
            src="rtmp:localhost/test/instance1"
        />
     
    이 부분을 ..

        <rtmpconnection id="rtc"
            autoconnect="true"
            debug="true"
            src="rtmp://192.168.123.90/oflaDemo"
        />

    으로 변경 
    ----------------------------------------------------------------------------------
    # vi videolibrary.jsp 
    ---------------------------------------------------------------------------------
        public String libraryDirectory =
            "/home/fms/applications/test/streams/instance1/"; --> 이부분을 ..
     "/usr/local/red5/webapps/oflaDemo/streams/" 으로 ..

        public String libraryUrl =
            "rtmp://localhost/test/instance1/"; --> 이부분을 
     "rtmp://domain/oflaDemo/"; 으로 ..

    ---------------------------------------------------------------------------------

    아래 주소로 접속하면 확인이 가능하다.

    http://192.168.123.2:8080/lps-4.2.0/demos/videolibrary/videolibrary.lzx

    ;; flv 파일명이 한글이면 안된다. 
    ;; flv 파일 리스트와 썸네일이 보이지 않는다.

    - thumbnail 관련 임시 조치

    # cd /usr/local/lps/Server/lps-4.2.x/demos/videolibrary
    # vi videolibrarythumbnail.lzx 
    --------------------------------------------------------------------------------
    .
            <videothumbnail name="vt"
    .
    thumbnailtime="${classroot.thumbnailtime}" resource="resources/thumbnail.jpg"
     />
    --------------------------------------------------------------------------------

    resources="원하는 thumbnail 파일 경로" 적어 준다.

    ....ㅠ.ㅠ

    - lps URL 변경

    # cd /usr/local/lps/Server/tomcat-5.0.24/conf/LPS/localhost
    # vi lps.xml
    --------------------------------------------------------------------------------
    <Context docBase="../../lps-4.2.x" path="/lps-4.2.x">

    위의 path="" 에 url에 표시될 alias명을 적는다.

    http://domain:8080/<alias_name>

    - SOLO 기능 이용하기

    solo 는 laszlo에서 개발된 내용을 HTML과 swf 형태로 변경해 주는 관리 기능이다.
    실제 laszlo로 미디어 관련 어플리케이션을 개발한 후 최종적으로는 solo를 이용하여
    웹 컨텐츠 형태로 변형 시켜 사용한다.

    solo 버턴을 클릭하면 해당 컨텐츠가 zip 파일로 압축된다. 
    압축 파일 위치는 /usr/local/lps/Server/lps-4.2.x/lps/admin 이다.

    웹서버의 적당한 디렉토리 및에 해당 파일을 풀고 사용하면 된다.



    4.3 WebCam 설치하기

    - webcam driver 다운로드

    $ wget http://mxhaard.free.fr/spca50x/Download/gspcav1-20071224.tar.gz
    $ wget http://forums.quickcamteam.net/attachment.php?aid=86 -O patch.tar.gz

    - driver 패치 및 설치

    $ tar -xvf gspcav1-20071224.tar.gz
    $ tar -xvf patch.tar.gz
    $ cd gspcav1-20071224 
    $ patch -p1 < ../quickcamE2500.diff

    $ ./gspca_build
    >> gspca.ko파일이 생성된다.

    $ lsmod | grep gspca            // videodev가 보일것이다.


    $ rmmod gspca
    $ modprobe -v gspca 
    >> insmod /lib/modules/2.6.18-92.el5/kernel/driver/usb/media/gspca.ko
    대략 저러한것들이 보인다.
    없을 경우..
      
    $ rmmod gspca
    $ mv gspca.ko /lib/modules/2.6.18-92.el5//kernel/driver/media/video/
    $ modprobe gspca
    위와 같이 해당위치에 파일을 옮겨주다.

    # cd /lib/modules
    # depmod -a 2.6.18-92.el5

    # mknod /dev/video0 c 81 0 
    # ln -sf /dev/video0 /dev/video

    - webcam viewer 설치 (xawtv)

    # yum install xawtv

    추천 0

    댓글목록

    등록된 댓글이 없습니다.

    UCC,스트리밍 관련 자료 목록

    게시물 검색

    PC 버전으로 보기