我在前面几篇博客中已经描述了sip通话的建立过程,以及基本代码实现流程,但是我们真正的目的是基于sip协议进行语音通话,本文分析这些音频流是如何建立和传输的.

与音频流传输相关的两个java类为AudioStream和AudioGroup,我们先看AudioStream类,它继承自RtpStream类,表示基于RTP协议传输音频流,在类中定义了一个静态代码段,

static {
        System.loadLibrary("rtp_jni");
    }

当创建该java类对象时,虚拟机首先会检测该类的字节码是否已加载到虚拟机,如果没有,则需要将其加载进来,加载的时候会执行类的静态代码段,System.loadLibrary()方法在加载动态库时候,会调用到JNI_OnLoad()方法,这个实现是在虚拟机里面做的,感兴趣的可以查看dalvik或art的代码实现,

这个库的代码实现在android工程的frameworks/opt/net/voip/src/jni/rtp目录下.

在RtpStream的构造函数中,

RtpStream(InetAddress address) throws SocketException {
        mLocalPort = create(address.getHostAddress());
        mLocalAddress =

android voip通话音频数据流传输过程解析相关推荐

  1. ELK学习8_ELK数据流传输过程_问题总结1

    数据流传输过程描述: 使用Java程序,读取本地的.csv文件: 发送给集群中的Kafka: Kafka将数据传给Logstash,这个过程中,Logstash中设置有filter,对字符串进行匹配或 ...

  2. ELK学习9_ELK数据流传输过程_问题总结2

    目的:使用Java程序把一个.csv文件发送给Kafka,再发送给ELK 实验步骤:见以前的博客 遇到的问题: 一. 直接发送比较大的.csv文件,ELK接到的汉字内容是乱码的 发送比较小的.csv文 ...

  3. android通过数组,流播放声音的方法,音频实时传输

    AudioRecord和AudioTrack类是Android获取和播放音频流的重要类,放置在android.media包中.与该包中 的MediaRecorder和MediaPlayer类不同,Au ...

  4. 【Android RTMP】音频数据采集编码 ( AAC 音频格式解析 | FLV 音频数据标签解析 | AAC 音频数据标签头 | 音频解码配置信息 )

    文章目录 安卓直播推流专栏博客总结 一. AAC 音频格式解析 二. FLV 音频数据标签解析 1. 分析 FLV 格式中的 AAC 音频格式数据 2. AAC 音频特殊配置 3. AAC 音频数据标 ...

  5. Android音频实时传输与播放(四):源码下载(问题更新)【转】

    Android音频实时传输与播放(四):源码下载(问题更新) 激动人心的时刻到了有木有 ^_^ 服务端下载请点击这里,客户端下载请点击这里! 最近有朋友在下载源码使用之后,说播放出来的声音噪声很大.其 ...

  6. Android 系统 (79)---Android应用程序安装过程解析

    Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...

  7. Android应用程序安装过程解析(源码解析)

    Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用户安装的apk首先会被拷贝到 /da ...

  8. Android PayPal支付的接入和SDK支付过程解析

    Android PayPal支付的接入和SDK支付过程解析 根据产品需求,要接入PayPal支付,在研究了几天支付后,总结下内容给新手使用,本篇文章如果与官方文档有差异的话,一切以官方为准.转载请注明 ...

  9. ART对象内存分配过程解析(上)——内存分配的准备阶段(Android 8.1)

    注:本文基于Android 8.1进行分析. ART对象分配过程解析--内存分配的准备阶段 本章我们将分析Android 8.1中ART虚拟机的对象创建时内存分配过程的分析.本节将介绍内存分配相关的环 ...

最新文章

  1. 智能交通:影响人类未来10-40年的重大变革
  2. 程序可以下载,在线调试disassembly窗口就出现了大片0x00000000 FFFFFFFF DCD 0xFFFFFFFF ; ? Undefined
  3. 基于 Bitbucket Pipeline + Amazon S3 的自动化运维体系
  4. Java程序员转Android开发必读经验
  5. Oracle分析函数——函数列表
  6. js优化阿里云图片加载(一)
  7. 数控车椭圆编程实例带图_数控车床任意位置椭圆宏程序编程,内附实例程序!...
  8. 在Vid4上突破28dB大关!视频超分新的里程碑:IconVSR
  9. 现在学java的都是傻子?
  10. C++中的日期和时间 time_t与struct tm转换
  11. jquery mysql php_PHP+jQuery+MySQL来实现一个在线测试项目
  12. matlab 保存变量
  13. java与eclipse不匹配_【JAVA小白】 用eclipse输入格式不匹配的问题
  14. 20模3c语言中等于多少钱,科三模拟多钱
  15. 计算几何基础--线段的性质
  16. UE打包时候生成多个PAK
  17. 网易邮箱大师上使用icloud邮箱
  18. 微服务架构之服务网关
  19. 电路模型和电路定律(Ⅲ)
  20. Poly2Tri介绍

热门文章

  1. 数据挖掘:概念与技术
  2. 滑动图片验证登录-java后端
  3. 2019年3月东方财富网Java开发面试(2年工作经验)
  4. (Matlab)基于蝙蝠算法实现电力系统经济调度
  5. 【图像增强】双边滤波retinex算法暗光图像增强【含Matlab源码 2305期】
  6. 科学化种植是关键,他带领村民种植中草药致富
  7. elasticsearch 使用RestHighLevelClient
  8. 控制台卸载绿盾加密终端后,重启电脑就蓝屏错误代码0xc0000001,安全模式进不了,不重装系统如何修复?
  9. 单对象编程实现2048小游戏!
  10. web 流程图工具_Web技术在云剪辑工具中的技术实践