mediastreamer2 android,在ubuntu下交叉编译linphone的支持库mediastreamer2 到Arm平台下(android、iOS)...

我是在3.3.2

版本的linphone基础上编译的,

所以取版本的时候要注意。

mediastreamer

本身是一个处理音视频以及流的框架。官方的说明是:

- mediastreamer2/ is one of the important part of linphone. It

is a framework library for audio

and video processing. It contains several objects for grabing

audio and video and outputing

it (through rtp, to file).

It contains also codec objects to compress audio and video

streams.

The mediastream.h files contain routines to

easyly setup audio streams.

需求的库比较多, 一般说来有这么几个:

oRTP

speex

ffmpeg

libv4l

其中,

speex还需要ogg的支持。 而ffmpeg是很强大的编解码库,

libv4l仿佛是给摄像头用的。在本文中, 我们不讨论ffmpeg 和libv4l的编译。

oRTP之前已经讨论过了(参考http://blog.sina.com.cn/s/blog_4868f98601017dr8.html)。本文只讨论speex、ogg和mediastreamer2

OGG编译方法和脚本编写:

这个没什么难度,直接上脚本:

#!/bin/sh

export TMPDIR="/tmp/"

export PRJ_ROOT="/home/hl/linphone"

export NDKROOT="/opt/android-ndk-r8c"

export PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86

CC=$PREBUILT/bin/arm-linux-androideabi-gcc

export CC

CFLAGS="--sysroot=$NDKROOT/platforms/android-9/arch-arm -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp -I$NDKROOT/platforms/android-9/arch-arm/usr/include"

export CFLAGS

LDFLAGS="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$NDKROOT/platforms/android-9/arch-arm/usr/lib -L$NDKROOT/platforms/android-9/arch-arm/usr/lib -nostdlib -lc -lm -ldl -lgcc"

export LDFLAGS

./configure --prefix=$PRJ_ROOT/libs --host=arm-linux --disable-shared --enable-static --disable-strict(最后这个貌似没有用,不过加上也没关系)

执行完成后直接make 然后make install即可

我在编译ogg的时候没有遇到任何问题,

真是难得的令人愉悦啊!!!

SPEEX编译方法和脚本编写

注意:

1)在安装完ogg之后 , 需要在--with-ogg的参数中指定 ogg安装目录

2)ndk的头文件下面/sys目录没有soundcard.h头文件,编译会报错。(但是/linux目录下面有)解决的方法和oSIP中一样, 如法炮制—— 把linux下面的头文件拷贝到sys下面去

#!/bin/sh

export TMPDIR="/tmp/"

export NDKROOT="/opt/android-ndk-r8c"

export PRJ_ROOT="/home/hl/linphone"

export PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86

CC=$PREBUILT/bin/arm-linux-androideabi-gcc

export CC

CFLAGS="--sysroot=$NDKROOT/platforms/android-9/arch-arm -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp -I$NDKROOT/platforms/android-9/arch-arm/usr/include"

export CFLAGS

LDFLAGS="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$NDKROOT/platforms/android-9/arch-arm/usr/lib -L$NDKROOT/platforms/android-9/arch-arm/usr/lib -nostdlib -lc -lm -ldl -lgcc"

export LDFLAGS

./configure --prefix=$PRJ_ROOT/libs --host=arm-linux --disable-shared --enable-static --disable-strict --disable-oggtest --with-ogg=/$PRJ_ROOT/libs/

执行完脚本之后,make ;make install即可

SPEEX编译过程中的问题:

1)speexdec.c:65:27: fatal error: sys/soundcard.h: No such file or directory

这个是ndk的头文件下面/sys目录没有这个头文件导致的。(但是/linux目录下面有)解决的方法和oSIP中一样, 如法炮制—— 把linux下面的头文件拷贝到sys下面去

MEDIASTREAMER2

编译方法和脚本编写:

好了,speex和ogg编译完成之后, 连同之前的oRTP。

我们就可以来编译mediastreamer2

脚本:

#!/bin/sh

export TMPDIR="/tmp/"

export NDKROOT="/opt/android-ndk-r8c"

export PRJ_ROOT="/home/hl/linphone"

export PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86

CC=$PREBUILT/bin/arm-linux-androideabi-gcc

export CC

CFLAGS="--sysroot=$NDKROOT/platforms/android-9/arch-arm -fPIC -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp -I$NDKROOT/platforms/android-9/arch-arm/usr/include"

export CFLAGS

LDFLAGS="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$NDKROOT/platforms/android-9/arch-arm/usr/lib -L$NDKROOT/platforms/android-9/arch-arm/usr/lib -nostdlib -lc -lm -ldl -lgcc -llog -lstdc++"

export LDFLAGS

#相关库的环境变量设置

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PRJ_ROOT/libs/lib/pkgconfig/

ORTP_CFLAGS=$(pkg-config --cflags ortp)

export ORTP_CFLAGS

ORTP_LIBS=$(pkg-config --libs ortp)

export ORTP_LIBS

SPEEX_CFLAGS=$(pkg-config --cflags speex)

export SPEEX_CFLAGS

SPEEX_LIBS=$(pkg-config --libs speex)

export SPEEX_LIBS

SPEEXDSP_CFLAGS=$(pkg-config --cflags speexdsp)

export SPEEXDSP_CFLAGS

SPEEXDSP_LIBS=$(pkg-config --libs speexdsp)

export SPEEXDSP_LIBS

./configure --prefix=$PRJ_ROOT/libs --host=arm-linux --disable-gsm --disable-libv4l --disable-ffmpeg--enable-external-ortp--disable-shared --enable-static

注意: 这个版本中剪切掉了 ffmpeg、gsm、libv4l不知道会不会对今后造成影响

如果需要这部分功能, 请单独编译并且修改配置

MEDIASTREAMER2编译过程中的问题

1)videoenc.c:833:17:

error: 'mblk_t' has no member named

'reserved3'

类似的还有:

msvideo.c: In function 'yuv_buf_init_from_mblk':

msvideo.c:215:6: error: 'mblk_t' has no member named 'reserved3'

仔细寻找之后发现应该是在这里:

oRTP/include/ortpstr_utils.h

typedef struct msgb

{

struct msgb *b_prev;

struct msgb *b_next;

struct msgb *b_cont;

struct datab *b_datap;

unsigned char *b_rptr;

unsigned char *b_wptr;

uint32_t reserved1;

uint32_t reserved2;

} mblk_t;

可见确实没有'reserved3'-'reserved5'

出现这个问题是由于 oRTP版本 和mediastreamer2版本不一致导致的, 这种情况下需要检查一下mediastreamer2的版本和oRTP是否对应

2)ld: error: cannot find -lpthread

NDK本身就没有thread库 。 所以这个-lpthread是多余的、

原因应该在于 configure.ac文件中 有这么一句;

LIBS="$LIBS -pthread -lpthread"

在configure文件里面也能看见它:

在16076行:

解决办法就是修改成:LIBS="$LIBS"

3)error: undefined reference to '__android_log_vprint'

这个应该是少链接了 log。增加 -llog可以解决

4) error: undefined reference to 'speex_.....'

这个应该是 speex库没有链接进去。

检查下SPEEX_CFLAGS看看

5)in function ms_snd_card_descs:mscommon.c(.data.rel.ro+0x4): error: undefined reference to 'msandroid_sound_card_desc'

仔细比较了一下 3.3.2的mediastreamer之后发现, 源代码中时没有这一段的, 这个估计是windows版linphone在编译的时候引入的, 所以处理办法就是把mscommon.c相关的这段代码注视掉

6)libtool: link: cannot find the library `../../oRTP/src/libortp.la' or unhandled argument `../../oRTP/src/libortp.la'

明明已经写了ORTP_CFLAGS和ORTP_LIBS怎么还会到不相关的目录区寻找?

仔细观察一下 configure文件的第18140行:

if test "$external_ortp" = 'false'; then

if test -e $srcdir/../oRTP/include/ortp/ortp.h ; then

echo "building from linphone source tree, using ../oRTP/include/ortp/ortp.h"

ORTP_CFLAGS="-I\$(top_srcdir)/../oRTP/include"

ORTP_LIBS="\$(top_builddir)/../oRTP/src/libortp.la"

if test x$ac_cv_c_bigendian = xyes ; then

ORTP_CFLAGS="$ORTP_CFLAGS -DORTP_BIGENDIAN"

fi

else

external_ortp=true

fi

fi

也就是说$external_ortp" = 'false'的情况下会去这个目录去寻找,

是这个条件成立的方法就是在config文件里面增加 一个选项:

--enable-external-ortp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先接到这一个项目,说是要用mediastreamer2做一个网络电话。之前也是从来没有接触过。于是首先开始在百度中搜索一下需要哪些东西,以及那些步骤。最后大致了解了一下,做这个项目最终要的就是需要移植好多的,每一个都需要配置,最后在交叉编译好动态,然后在执行mediastreamer2的时候去调用这些动态和头文件就OK了。 1、首先meidastream2是基于ortp的,那么首先就是下载源码,交叉编译交叉编译ortp 下载源码:http://savannah.c3sl.ufpr.br/linphone/ortp/sources/?C=S;O=A 我使用0.18.0版本 ortp-0.18.0.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf ortp-0.18.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure CC=arm-linux-gcc --host=arm-linux --target=arm-linux --prefix=/home/protocol_stack/install/ make make install 然后用chmod 777 **.sh 执行脚本./**.sh 这样子就完成了配置,编译,安装。(安装目录为/home/protocol_stack/install/,也就是最后生成的头文件,可执行文件,文件都会在这个目录下) 2、因为项目是要用到SIP协议的,所以我们还需要移植sip的 osip2和eXosip2协议,这两个协议对应两个,osip是简单的osip协议,但是因为API少等一系列原因,增加了eXosip2对osip2的补充。 交叉编译osip2 下载源码:http://ftp.gnu.org/gnu/osip/ 我使用的版本是3.6.0 libosip2-3.6.0.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libosip2-3.6.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure --host=arm-linux --target=arm-linux --prefix=/home/protocol_stack/install/ make make install 然后用chmod 777 **.sh 执行脚本./**.sh 交叉编译eXosip2 下载源码:http://ftp.gnu.org/gnu/osip/ 我使用的版本是3.6.0 libeXosip2-3.6.0.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libeXosip2-3.6.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure --host=arm-linux --target=arm-linux --prefix=/home/protocol_stack/install/ PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig make make install 然后用chmod 777 **.sh 执行脚本./**.sh 接下来可以编译mediastreamer2了,不过ms2,依赖好多:ogg、speex、pulseaudio。而pulseaudio又依赖许多:alsa、json、libtool。 3、交叉编译ogg 下载源码:http://xiph.org/downloads/ 我使用1.3.1版本 libogg-1.3.3.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libogg-1.3.3.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure CC=arm-linux-gcc --prefix=/home/protocol_stack/install/ --host=arm-linux make make install 然后用chmod 777 **.sh 执行脚本./**.sh 4、交叉编译speex 下载源码:http://www.speex.org/downloads/ 我使用1.2rc1版本 speex-1.2rc1.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf speex-1.2rc1.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure CC=arm-linux-gcc --prefix=/home/protocol_stack/install/ --with-ogg=/home/protocol_stack/install/ --enable-fixed-point --disable-float-api \ --host=arm-linux make make install 然后用chmod 777 **.sh 执行脚本./**.sh 5、交叉编译pulseaudio 下载源码:http://freedesktop.org/software/pulseaudio/releases/ 我使用1.0版本 pulseaudio-1.0.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf pulseaudio-1.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure CC=arm-linux-gcc CXX=arm-linux-g++ --prefix=/home/protocol_stack/install --host=arm-linux --disable-rpath --disable-nls --disable-dbus --disable-bluez --disable-samplerate --disable-solaris --disable-gconf --disable-avahi --disable-jack --disable-lirc --disable-glib2 --disable-gtk2 --disable-openssl --disable-ipv6 --disable-asyncns --disable-per-user-esound-socket --disable-oss-output --disable-oss-wrapper --disable-x11 --enable-neon-opt=no --with-database=simple PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig CPPFLAGS=-I/home/protocol_stack/install/include LDFLAGS=-L/home/protocol_stack/install/lib CFLAGS=-I/home/protocol_stack/install/include make make install 然后用chmod 777 **.sh 执行脚本./**.sh 错误1: checking for ltdl.h... no configure: error: Unable to find libltdl version 2. Makes sure you have libtool 2.4 or later installed. make: *** No targets specified and no makefile found. Stop. 分析;找不到libltdl。确保你有libtool 2.4及以上的版本。 下载libtool 2.4.2版本 这时需要交叉编译libtool 下载源码:ftp://ftp.gnu.org/gnu/libtool/ 我使用2.4.2版本 libtool-2.4.2.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libtool-2.4.2.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure --host=arm-linux --prefix =/home/protocol_stack/install/ make make install 然后用chmod 777 **.sh 执行脚本./**.sh 交叉编译alsa: http://www.alsa-project.org/main/index.php/Main_Page 这个的版本需要根据你嵌入式Linux内核中alsa的版本而定,可以使用命令查看内核中alsa的版本: # cat /proc/asound/version Advanced Linux Sound Architecture Driver Version 1.0.24. 可以到内核中alsa驱动版本是1.0.24,所以我选1.0.24版本 alsa-lib-1.0.24.1.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf speex-1.2rc1.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure --host=arm-linux --prefix =/home/protocol_stack/install/ make make install 然后用chmod 777 **.sh 执行脚本./**.sh 错误:configure: error: Package requirements ( sndfile >= 1.0.20 ) were not met: No package 'sndfile' found 分析:缺少 libsndfile,那么接下来再进行交叉编译libsndfile libsndfile-1.0.25.tar.gz http://www.linuxfromscratch.org/blfs/view/svn/multimedia/libsndfile.html 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libsndfile-1.0.25.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure --host=arm-linux --prefix =/home/protocol_stack/install/ make make install 然后用chmod 777 **.sh 执行脚本./**.sh 7、最后编译mediastreamer2 下载源码:http://ftp.twaren.net/Unix/NonGNU//linphone/mediastreamer/ 我使用2.8版本 mediastreamer-2.8.0.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf mediastreamer-2.8.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 把下边这三行写成一个脚本 vim **.sh ./configure CC=arm-linux-gcc --prefix=/home/protocol_stack/install/ PKG_CONFIG_PATH=/home/protocol_stack/install/lib/pkgconfig --disable-gsm --enable-video=no --enable-macsnd=no --disable-static --disable-sdl --disable-x11 --disable-ffmpeg --host=arm-linux --target=arm-linux make make install 然后用chmod 777 **.sh 执行脚本./**.sh 上面的configure选项没有屏蔽v4l1和v4l2,所以还得交叉编译v4l 编译v4l libv4l-0.6.4.tar.gz 下载源码:http://pkgs.fedoraproject.org/repo/pkgs/libv4l/ 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf libv4l-0.6.4.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 我使用0.6.4版本 libv4l-0.6.4.tar.gz make clean make CC=arm-linux-gcc make install PREFIX=/home/protocol_stack/install 编译mediastreamer2出错:(1)checking for LIBCHECK... no checking for LIBJSON... no configure: error: Package requirements ( json >= 0.9 ) were not met: No package 'json' found 解决方法就是交叉编译json 下载源码:http://ftp.debian.org/debian/pool/main/j/json-c/ 分析:缺少json,那么我们继续交叉编译json json-c_0.12.1.orig.tar.gz 然后通过winshare(Windows和Linux的通信)把下载好的文件拷贝到Linux下, 然后解压 tar zxvf mediastreamer-2.8.0.tar.gz 注意这个时候可能会发生错误,是没有权限的问题,那么就在命令行前边加上sudo 然后配置 ./configure --host=linux-arm \ --prefix =/home/protocol_stack/install/ make && make install 好了,json已经编译完成了。接下来我们继续编译mediastreamer2 。。。。。 但是还是有问题,怎么办呢?还是哪个问题还是找不到json。 分析:在json的论坛中,找到了解决方案:把编译生成的/lib/pkgconfig/这个目录下生成了一个json-c.pc。最后mediastreamer2在调用的时候找的是json.pc。那么我们就把这个文件名改为json.pc #mv json-c.pc json.pc OK,这次这个是可以编译的过去了。接下来继续编译 。。。 又出现问题了 /home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_malloc' /home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_realloc' 问题分析: 这个错误的原因是因为没有定义 rpl_malloc 和 rpl_realloc 这两个变量。 那么我们应该怎么办么? 那么就在这个目录下进行查这两个变量是在哪里定义的? 于是:#grep "rpl_malloc" -nR * ....... 找到了,原来这两个变量是在这个config的文件中的。是一个宏开关 那么就好办了,我们就直接把这两个宏进行注释。 嗯嗯,继续。。。我们重新编译json。。。嗯嗯编译好了,接下来继续来编译mediastreamer2 。。。。 又出错了,还是这个原因 /home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_malloc' /home/protocol_stack/install/lib/libjson.so: undefined reference to `rpl_realloc 嗯嗯,还是这个原因?究竟是为什么呢。再次来到json的目录下,再次看有没有把那两个宏开关给关闭? 嗯哼? 竟然没有关闭? 分析?明白了。原来是我把配置和编译同时执行了。这个宏开关是./configure ...生成的。 那么就只好,这样。把./configure。。。生成的config文件,再进行关闭宏开关。最后直接make && make install -j8 直接编译,安装,是不能再次进行配置的。因为以配置config文件就会再次生成,那么宏开关就又开了。 OK,安装好了,下来继续进行编译mediastreamer2.。。。。。。。。。。。 。。。。。。。。。。。。。。 又出现了问题? error: /user/include/python2.7/pyconfig.h:15:52: fatal error: arm-linux-gnueabi/python2.7/pyconfig.h: No such file or directory compilation terminated. 分析::找不到arm-linux-gnueabi/python2.7/pyconfig.h这文件。那就继续交叉编译python 好吧,继续下载python,然后再进行交叉编译,但是编译Python的时候出来一系列的问题。根本没有办法解决。 那么该怎么办呢?时候一个小时又一个小时的过去? 最后有一个大胆的想法,既然python都编译不下去。那就不要了。 于是,在mediastreamer2的./configure 中添上一项 --without-python 。 。。。再次配置编译。。。。。。。。。。。 error: /user/include/python2.7/pyconfig.h:15:52: fatal error: arm-linux-gnueabi/python2.7/pyconfig.h: No such file or directory compilation termiated. 嗯哼?还是一样的错误。怎么办呢? 于是乎就又在论坛上进行找灵感。。。。。 还是找不到。。。 又一结合前边几个的配置编译,发现不使能一个模块还可以用另外一个--disable-python 。。。 于是乎 就把--without-python改为了--disable-python 继续编译。。。。 。。。。。。。。。。。。。。。。。。。。。 到了这个节骨眼上了,编译每跳一下,我的心就跟着逗一下。。。。心酸 。。。。。。 。。。。。。 。。。。。。 竟然编译成功了。。。。 哈哈。。。。。。。。。 于是,马上就把编译好的,拷贝到了开发板。。。 嗯嗯,本来还想把编译好的目录树拷贝下的,但是太多了,放不下。。。算了吧。。。。 找到编译好的中的/bin中找到arm-linux-mediastream 然后执行./arm-linux-mediastream 。。。。报错了 问题: error : while loading shared libraries: libmediastreamer.so.1: cannot open shared object file: No such file 答案:分析: 遇到这个问题就是,libmediastreamer.so.1这个动态,在可执行文件armlinuxmediastreamer执行的时候,会调用这个动态,但是环境变量中找不到这个动态。那么我们就是要把我们编译好的动态链接的目录加到环境变量中 LD_LIBRARY_PATH=$LD_LIBRARY_PATH://arm/lib/这个目录下就是放着我们编译好的所有的动态链接(包括libmediastreamer.so.1) 执行步骤:LD_LIBRARY_PATH=$LD_LIBRARY_PATH://arm/lib export LD_LIBRARY_PATH ./arm-linux-mediastream mediastream --local --remote --payload [ --fmtp ] [ --jitter ] [ --width ] [ --height ] [ --bitrate ] [ --ec (enable echo canceller) ] [ --ec-tail ] [ --ec-delay ] [ --ec-framesize ] [ --agc (enable automatic gain control) ] [ --ng (enable noise gate)] [ --ng-threshold (noise gate threshold) ] [ --ng-floorgain (gain applied to the signal when its energy is below the threshold.) ] [ --capture-card ] [ --playback-card ] [ --infile <input wav file> specify a wav file to be used for input, instead of soundcard ] [ --outfile specify a wav file to write audio into, instead of soundcard ] [ --camera ] [ --el (enable echo limiter) ] [ --el-speed (gain changes are smoothed with a coefficent) ] [ --el-thres (Threshold above which the system becomes active) ] [ --el-force (The proportional coefficient controlling the mic attenuation) ] [ --el-sustain (Time in milliseconds for which the attenuation is kept unchanged after) ] [ --el-transmit-thres (TO BE DOCUMENTED) ] [ --rc (enable adaptive rate control) ] [ --zrtp (enable zrtp) ] [ --verbose (most verbose messages) ] [ --video-windows-id <video surface:preview surface>] [ --srtp (enable srtp, master key is generated if absent from comand line) [ --netsim-bandwidth (simulates a network download bandwidth limit) 于是按照第一种方式进行 参数添加 ./arm-linux-mediastream --local 8888 --remote 127.0.0.1:88 88 OK运行正常了 下面是运行信息。。。 ortp-message-audio_stream_process_rtcp: interarrival jitter=119 , lost packets percentage since last report=0.000000, round trip time=0.000000 seconds ortp-message-oRTP-stats: RTP stats : ortp-message- number of rtp packet sent=150 ortp-message- number of rtp bytes sent=25800 bytes ortp-message- number of rtp packet received=150 ortp-message- number of rtp bytes received=25800 bytes ortp-message- number of incoming rtp bytes successfully delivered to the application=25284 ortp-message- number of rtp packet lost=0 ortp-message- number of rtp packets received too late=0 ortp-message- number of bad formatted rtp packets=0 ortp-message- number of packet discarded because of queue overflow=0 ortp-message-Bandwidth usage: download=81.290281 kbits/sec, upload=81.288664 kbits/sec ortp-message-Receiving RTCP SR ortp-message-Receiving RTCP SDES ortp-message-Found CNAME=unknown@unknown ortp-message-Found TOOL=oRTP-0.18.0 ortp-message-Found NOTE=This is free sofware (LGPL) ! ortp-message-Quality indicator : 4.888437 运行正常了。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值