之前有个基于java和jni共同实现的版本,juv需要授权,语音数据在java层和jni层不停互转。

这个版本,完全在jni层实现,java只处理方法调用和事件回调。

OpenSL ES,从API 9开始支持的技术,通过这个标准,Android已经完全可以在native层采集和播放音频。继续阅读

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Android基于OpenSL ES,Speex,RTMP的Voip客户端实现

>>>>>整合版,一键运行,点我<<<<<

准备工作

要在 Microsoft Win32??平台上编译Nginx你需要:

  • Microsoft Visual C compiler. Microsoft Visual Studio??8 and 10 are known to work.(用来编译)
  • MSYS.(执行配置脚本)
  • Perl, if you want to build OpenSSL??and nginx with SSL support. For example?ActivePerl?or?Strawberry Perl.(注意这里不能使用MSYS的perl)
  • Mercurial?client.(通过HG下载最新源码)
  • PCRE,?zlib?and?OpenSSL?libraries sources.(PCRE用来重写url,zlib支持页面压缩,这里编译rtmp模块,必须编译出openssl)
  • win32版nginx-rtmp-module模块源代码

编译步骤

在开始之前,你需要将Perl,Mercurial,MSYS bin目录加入PATH环境变量,也就是打开cmd,输入perl,hg,bash不会提示找不到命令.运行vcvarsall.bat或者叫Visual Studio命令提示(2010).继续阅读

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 编译windows版nginx-rtmp-module

正在做一个基于RTMP+H264的手机端实时视频流项目。
按以前的方案需要分别用librtmp/JUV和opencore的H264解码库实现。
在进一步了解FFmpeg后,决定全部使用ffmpeg来实现。
当然,在手机客户端上,多余的解码库是不需要的。因此需要对ffmpeg精简配置,最终jni代码编译链接libavcodec.a?libavformat.a ?libavutil.a?libswscale.a 后的so大小控制在1.2M左右,打包到apk后压缩到456k。
配置如下

继续阅读

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 使用ffmpeg-1.0内置RTMP协议实时解码H264视频流

本例严重过期,并且使用了不开源且收费的库
请尝试最新开源版:
Android基于OpenSL ES,Speex,RTMP的Voip客户端实现
iOS版:
iOS基于Audio Queues,Speex,Rtmp的Voip客户端

—————-仅供参考请勿用于项目———————–
先说下实现原理,手机采集到语音后进过Speex编码,通过juv以直播形式发布自己的语音流到red5,也是通过juv播放对方的直播流,经过Speex解码后输出到扬声器,如下图:

Android  voip  流程图
Android端采集编码和解码播放Speex,参考android-recorder,至于他用的red5客户端,看了下,没看明白。。。
核心代码如下:

继续阅读

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: Android通过JUV+Red5+Speex实现网络语音聊天(一)

在做完一个基于RTMP的音视频通话软件后,想深入了解下RTMP协议的实现。
项目的服务器环境是FMS,这里,对另一种开源的服务端 Red5做个了解。

需要Jre环境。

下载最新版1.0 RC1?http://trac.red5.org/downloads/1_0/setup-Red5-1.0.0-RC1.exe
安装,在过程中会需要输入服务器IP和HTTP访问的端口号。

安装完毕,运行安装目录下的?red5.bat 一闪而过。OK,用cmd运行。发现报一下错误:

google一番后知道,需要删除lib目录继续阅读

原创文章,转载请注明: 转载自贝壳博客

本文链接地址: 安装配置Red5 Server 1.0 RC1 (一)