http://openmcu.ru/eng.htm
openmcu: http://h323plus.cvs.sourceforge.net/viewvc/h323plus/applications/openmcu/
Debian官方提供了openmcu包,但是已经更新为2.1版本的,从版本2.0开始,据说不再支持视频传输,因此,如果我们想提供视频功能,就需要自己编译安装。
- 在http://prdownloads.sourceforge.net/openh323/ 下载最新的openmcu、pwlib、openh323包(其实也不能用最新的,openmcu要用1.x版本的,pwlib我用的是1.8.7 (Mimas patch 2)版本,openh323我用的是1.15.6 (Mimas patch 2)版本,我猜测1.x的openmcu是依赖于这两个有点老的包的)。
- 在Debian下准备编译所需的库文件,可以用apt-get build-dep openmcu指令,也可以先apt-get install openmcu然后再卸载openmcu包,都可以得到所需的库文件。
- 把三个包用tar zvxf解压,并且把pwlib解出来的目录改名为pwlib,openh323包解出来的目录命名为openh323,这样openmcu编译时可以找到这两个库。
- 分别在pwlib目录下和openh323目录下执行./configure
- 进入openmcu目录,执行make all
新生成目录中的obj_linux_x86_r目录下是可执行文件,另一个obj_linux_x86_d目录下是debug版本的文件。这样生成的是使用动态运行库的版本。如果要生成静态版本,那么需要使用make optnoshared指令来编译openmcu。
下面的任务是将openmcu设置为开机自动运行,注意必须给openmcu加--disable-menu来禁用交互模式,否则openmcu无法在后台运行。我下面的办法用的是cron来实现的,也可以用inetd等实现。
生成start脚本内容如下:
#!/bin/sh PROCESS_NUM=`ps -ef | grep "openmcu" | grep -v "grep" | wc -l` if [ $PROCESS_NUM -lt 1 ]; then exec nohup /opt/openmcu/openmcu -n -v --disable-menu > /opt/openmcu/mcu.log & fi
- 用chmod +x给start脚本以可执行权限
- 用crontab -u 执行openmcu的用户名 -e进入cron任务编辑模式(是一个类似vi的编辑环境),输入:
*/1 * * * * /opt/start
表示每一分钟运行一次start脚本。
这样实现的其实不仅仅是开机自动运行了,还保证了每1分钟检查一次是否openmcu在运行,如果没在运行,则启动之。
How to build openmcu-ru on ubuntu
1. install tools
sudo apt-get install libtool autoconf flex bison automake pkg-config
2.yasm-1.3.0
sed -i 's#) ytasm.*#)#' Makefile.in &&
./configure --prefix=/opt/openmcu &&
make
make instal
3.ffmpeg-2.8.3
gedit ~/.basnrc
#add /opt/openmcu/bin to PATH env.
export PATH=$PATH:/opt/openmcu/bin
./configure --prefix=/opt/openmcu --enable-shared
make
make instal
4.x264-snapshot-20151204-2245
./configure --prefix=/opt/openmcu --enable-shared
make
make install
5.libvpx-1.5.0
./configure --prefix=/opt/openmcu
make
make install
6.openmcu-master ver4.01
./autogen.sh
./configure -prefix=/opt/openmcu --disable-openssl
configure: error: avcodec headers not found! Install FFmpeg or Libav.
Solultion: modify the configure file
PRODUCT=OpenMCU-ru ==> PRODUCT=
PROG=openmcu-ru ==> PROG=
make
/usr/bin/ld: cannot open output file ./obj/: Is a directory
collect2: error: ld returned 1 exit status
make[1]: *** [all] Error 1
Solution:
Modify the sub Makefile: openmcu-ru/Makefile
PROG= ==> PROG=openmcu-ru
make install
7. test
sudo ./openmcu-ru/obj/openmcu-ru -d &