Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已答复] FreeBSD6.2视频环境搭建

[复制链接]
HquNetLab 发表于 2008-4-19 18:00:28 | 显示全部楼层 |阅读模式
最近在搞空间的视频环境搭建的时候花了好多时间,这里特意把总结出来的一些经验和大家分享。
一、更新ports
       在安装过程中,我们要从FreeBSD的ports安装,所以先更新ports,这又两种方式,一种是修改配置文件,把更新服务器的地址加到配置文件里面,然后执行更新命令;另外一种是把跟新服务器的地址作为参数加到更新命令里面,我们这里使用第二种,执行如下命令:
cvsup -gL 2 -h cvsup.freebsdchina.org /usr/share/example/cvsup/ports-supfile

二、安装perl-5.8.8
pkg_add –r ftp://ftp.freebsdchina.org/pub/F ... lang/perl-5.8.8.tbz


三、安装视屏转化程序Ffmpeg
# cd /usr/ports/multimedia/ffmpeg/
#make WITH_FAAC=yes WITH_LAME=yes WITHOUT_IPV6=yes WITH_X264=yes WITH_XVID=yes WITH_DTS=yes WITH_OGG=yes WITH_FAAD=yes install        安装的过程中会跳出x264 和xvid 的编译配置画面,可以忽略配置,直接选OK,就继续安装了。
      安装结束以后,你可以执行命令ffmpeg,如果出现ffmpeg的帮助信息,哪么说明你安装成功了。

四、安装mencoder
       我起初也是从ports安装,结果出现如下错误:
。。。。。。。。。。。
VE_CONFIG_H -I/usr/local/include -I/usr/local/include -I/usr/local/include -I../libavcodec -I../libavformat -I. -I.. -I../libavutil -O2 -fno-strict-aliasing -pipe  -O3 -ffast-math -fomit-frame-pointer  -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DHAVE_CONFIG_H -I/usr/local/include -I/usr/local/include -I/usr/local/include   -c -o ao_nas.o ao_nas.c
ao_nas.c:35:28: audio/audiolib.h: No such file or directory
ao_nas.c:111: error: syntax error before "AuServer"
ao_nas.c:135: error: syntax error before '*' token
ao_nas.c: In function `nas_print_error':
ao_nas.c:138: error: `aud' undeclared (first use in this function)
ao_nas.c:138: error: (Each undeclared identifier is reported only once
ao_nas.c:138: error: for each function it appears in.)
ao_nas.c:138: error: `as' undeclared (first use in this function)
ao_nas.c:139: error: `prefix' undeclared (first use in this function)
ao_nas.c: In function `nas_readBuffer':
ao_nas.c:144: error: syntax error before "as"
ao_nas.c:183: error: structure has no member named `aud'
ao_nas.c:183: error: structure has no member named `flow'
ao_nas.c:183: error: `AuFalse' undeclared (first use in this function)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
ao_nas.c:591: error: `as' undeclared (first use in this function)
ao_nas.c:592: error: `AuSuccess' undeclared (first use in this function)
ao_nas.c:593: error: structure has no member named `aud'
gmake[1]: *** [ao_nas.o] Error 1
gmake[1]: Leaving directory `/usr/ports/multimedia/mencoder/work/MPlayer-1.0rc2/libao2'
gmake: *** [libao2/libao2.a] Error 2
*** Error code 2

Stop in /usr/ports/multimedia/mencoder.
*** Error code 1

Stop in /usr/ports/multimedia/mencoder.
lab#

      现在还没有查出原因,但我估计是应为系统或者GCC缺少什么库文件导致的,最终没有办法解决,只有自己下载源代码来编译安装,如有那位高手知道以上错误的原因,也请跟帖赐教;

      好了,我们先下载mencoder 最新的安装程序
wget :http://www1.mplayerhq.hu/MPlayer ... rt-snapshot.tar.bz2

     然后下载mencoder解码库
wget:http://www1.mplayerhq.hu/MPlayer ... al-20061022.tar.bz2

     好了,下面就开始安装了;
tar jxvf essential-20061022.tar.bz2
mkdir /usr/lib/codecs  //这里要另外建一个文件夹来存放库文件,避免和系统库文件冲突;
cp -rf essential-20061022/*/usr/lib/codecs
tar jxvf mplayer-export-snapshot.tar.bz2
cd mplayer-export-2007-05-09// 注:此文件夹名会因为下载的时间不同而不同
./configure –prefix=/usr/local/mplayer--codecsdir=/usr/lib/codecs
gmake //注意这里使用gmake ,而不是make,否则会出错;
gmake install
gmake clean
安装好以后,执行/usr/local/mplayer/bin/mencoder –oac help,看到mencoder的版本信息,说明mencoder安装成功。

四、设定执行任务
   编写命令脚本文件
touch /usr/local/bin/convert
ee /usr/local/bin/convert输入如下
#!/bin/sh
Extension="mpg 3gp mov mpeg vod mp4 m4v avi wmv mpe rmvb rm"

#INPUT YOUR SUPESITE PATH
SiteRoot="{SUPESITEROOT}"

for e in $Extension; do
        FullFiles=`find $SiteRoot/video/temp -name "*.$e" -exec ls {} \;`
        for FullFile in $FullFiles;do
        if [ -f $FullFile ];then
                a=`basename $FullFile | awk -F "." '{print $1}'`
                b=`echo  $a | cut -d_ -f 2 | cut -c-6`
                if [ !-d $SiteRoot/video/$b ]; then
                        mkdir $SiteRoot/video/$b
                        chown -R www:www $SiteRoot/video/$b
                fi
                /usr/local/mplayer/bin/mencoder $FullFile -o $SiteRoot/video/$b/$a.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=5000:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=480:360 -srate 22050
                chown www:www $SiteRoot/video/$b/$a.flv
                ffmpeg -i $SiteRoot/video/$b/$a.flv -y -f image2 -ss 8 -sameq -t 0.001 -s 480x360 $SiteRoot/video/$b/$a.jpg
                chown www:www $SiteRoot/video/$b/$a.jpg
                rm $FullFile
        fi
        done
done
//注意,这里要将第一行的#!/bin/sh改为你具体的shell类型,然后把{SUPESITEROOT}改为你的论坛根地址地址;
   

确保以上无误以后,执行
chmod +x /usr/local/bin/convert
     然后把所要而测试的文件放到{SUPESITEROOT}/video/temp下,执行如下命令
/usr/local/bin/convert
      如果看到程序执行的输出,并且测试文件被转化为*.flv格式的话,说明上述文件没问题,然后在把它加到计划任务里面
crontab -e
    按i,进入插入状态,然后输入计划命令,其中的n表示每n分钟执行一次转换,可根据自身情况修改n值,如:10(每10分钟执行一次转换)
0-59/n * * * * /usr/local/bin/convert

五、在线录制
    1)安装jdk1.5所需依赖的两个包xorg-libraries和javavmwrapper
cd  /usr/ports/x11/xorg-libraries
make
make install
make clean;

cd /usr/ports/java/javavmwrapper
make
make install
make clean

    2)安装jdk1.5
好了,下面我们来安装jdk1.5
cd /usr/ports/java/diablo-jdk15
make  //这是他会出现提示,要求你手动下载diablo-caffe-freebsd6-i386-1.5.0_07-b01.tar.bz2到文件夹/usr/ports/distfiles中,我们照半就好了,只是下载的时候不要用系统的fetch或者wget下载,而是在wndows下打开网页http://www.freebsdfoundation.org/downloads/java.shtml,选择下载后再用ftp传上去,否则下载的文件无法打开,我在这里也耽误了好多时间才发现下载玩以后我们就开始安装了
make
make install
make clean

安装结束以后,执行如下命令
java -version
如果看到java的版本号,哪么说明你的java安装成功了


      3)安apache-ant
cd /usr/ports/devel/apache-ant
make
make install
make clean

     4)安装red5
先下载red5
wget http://dl.fancycode.com/red5/red5-0.6rc2.tar.gz
tar -zxvf red5-0.6rc2.tar.gz
mv red5-0.6rc2 /usr/local/red5
修改build.properties文件
ee build.properties 找到
找到java.target_version=1.6修改为java.target_version=1.5,然后开始编译
ant


     5)安装online.zip
下载online.zip,
wget :http://www.supesite.com/tools/online.zip
将online.zip解压到/usr/local/red5/webapps中,然后设置文件夹online及子文件夹属性为777
tar -zxvf online.zip
mv online /usr/local/red5/webapps
chmod 777 /usr/local/red5/webapps/online
chmod 777 /usr/local/red5/webapps/online/*

    6)开启red5
/usr/local/red5/red5.sh &

    7)设置论坛,把在线视频服务器的录制媒体存放路径设置为:
/usr/local/red5/webapps/online/streams
到此为止,你的空间媒体就结束了

六、总结
     1)在从ports安装的时候,有时出似如下现类错误
===>  Found saved configuration for red5-0.7.0
===>  Extracting for red5-0.7.0
=> MD5 Checksum mismatch for Red5War_0.7.0-java5.zip.
=> SHA256 Checksum mismatch for Red5War_0.7.0-java5.zip.
===>  Refetch for 1 more times files: Red5War_0.7.0-java5.zip Red5War_0.7.0-java5.zip
===>  Found saved configuration for red5-0.7.0
=> Red5War_0.7.0-java5.zip doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://www.nielsenaa.com/red5-installers/.
fetch: Red5War_0.7.0-java5.zip: local modification time does not match remote
=> Attempting to fetch from http://www.red5.fr/release/0.7.0/war/.
fetch: http://www.red5.fr/release/0.7.0/war/Red5War_0.7.0-java5.zip: No address record
=> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
fetch: ftp://ftp.FreeBSD.org/pub/FreeBS ... ar_0.7.0-java5.zip: File unavailable (e.g., file not found, no access)
=> Couldn't fetch it - please try to retrieve this
=> port manually into /usr/ports/distfiles/ and try again.
*** Error code 1

Stop in /usr/ports/www/red5.
*** Error code 1

Stop in /usr/ports/www/red5.
*** Error code 1

Stop in /usr/ports/www/red5.
lab#

这是应为网络等原因,导致下载终端,然后再次下载时两次文件不符合造成的,我们只要删除/usr/ports/distfiles文件夹中相应的文件,然后再次安装就可以了

       2)有时从ports安装是出现类似如下错误
ab# make
make  all-recursive
Making all in doc
Making all in lib
make  all-am
if gcc -DHAVE_CONFIG_H -DLIBDIR=\"/usr/bin/lib\" -I. -I. -I.. -g -O2-MT rtapelib.o -MD -MP -MF ".deps/rtapelib.Tpo" -c -o rtapelib.ortapelib.c; then mv -f ".deps/rtapelib.Tpo" ".deps/rtapelib.Po"; elserm -f ".deps/rtapelib.Tpo"; exit 1; fi
In file included from rtapelib.c:35:
system.h:76:19: errno.h: No such file or directory
rtapelib.c: In function `do_command':
rtapelib.c:131: error: `EIO' undeclared (first use in this function)
rtapelib.c:131: error: (Each undeclared identifier is reported only once
rtapelib.c:131: error: for each function it appears in.)
rtapelib.c: In function `get_status_string':
rtapelib.c:149: error: `EIO' undeclared (first use in this function)
rtapelib.c: In function `get_status':
rtapelib.c:219: error: `EIO' undeclared (first use in this function)
rtapelib.c: In function `rmt_open__':
rtapelib.c:381: error: `EMFILE' undeclared (first use in this function)
rtapelib.c:405: error: `ENOENT' undeclared (first use in this function)
rtapelib.c: In function `rmt_read__':
rtapelib.c:581: error: `EIO' undeclared (first use in this function)
rtapelib.c: In function `rmt_write__':
rtapelib.c:617: error: `EIO' undeclared (first use in this function)
rtapelib.c: In function `rmt_ioctl__':
rtapelib.c:662: error: `EINVAL' undeclared (first use in this function)
*** Error code 1

Stop in /tmp/tar-1.15.91/lib.
*** Error code 1

Stop in /tmp/tar-1.15.91/lib.
*** Error code 1

Stop in /tmp/tar-1.15.91.
*** Error code 1

Stop in /tmp/tar-1.15.91.

这是应为你的系统没装一些相应的包,或者gcc或包的版本太低造成的,升级相应的包就可以解决了


       3)有时从ports安装文件时没有配置好,这是只要从新执行
make config
然后配置好,在从新安装就好了


       4)使用GCC编译时有时出先一些错误,有的错误并不影响软件的运行,我们可以执行:
make -i install
来忽略错误,继续安装,但一般部推荐这样做,除非你知道错误并不严重


      5)有时编译源代码时,执行./congieure ....配置成功,可是make时却出错
lab# make
Error expanding embedded variable.
lab#

这是由于make和gmake的Makefile文件部兼容造成的,我们只要使用gmake代替make就可以解决了


     6)总结的总结
  在学习过程中,我们总会遇到不同的错误,怎是这样,我们的学习才充满了乐趣~。当遇到错误是,我们要认真的思考错误的原因和解决的办法,多到我能够上查一查,不要想当然的。另外看网上的一些教程,要先搞懂他的每一步操作是干什么的,然后在结合自己的情况,不要只会按部就班。网上的教程只是提供了一个大概的方向,而并不一定能在你的系统里面正确的执行。最后,网上的教程推荐看官方的文档。

参考文章:
http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html
http://www.mplayerhq.hu/DOCS/HTML/zh_CN/mencoder.html
在此表示致谢
jackyzhu_001 发表于 2008-4-19 18:06:43 | 显示全部楼层

顶一下,呵呵
回复

使用道具 举报

hssuhui 发表于 2008-4-19 18:21:25 | 显示全部楼层
不错 学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-28 17:30 , Processed in 0.302731 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表