Android音视频即时通讯软件怎样通过JNI快速实现


Android音视频即时通讯软件怎样通过JNI快速实现

音视频通信

作为独立开发者或想缩短音视频开发周期的公司来说,想要在Android平台下实现音视频通信,最快捷的方法是寻找开源项目或调用其他公司API。之所以这么说是因为音视频通信技术涉及到底层音视频采集、解码、 FFmpeg(音视频处理解决方案)、媒体流传输协议等太多太多相关技术知识点。试了几个开源项目,视频差强人意,语音与视频不同步等不稳定因素。因此我把目光放到其他公司的API上(点击下载demo程序)。demo程序API提供了一系列纯Java语言的调用接口,通过JNI即可调用内核共享库(.so 类似win32的dll),根据官方开发文档我很快就实现音视频通信,下面是我在调用其API的经验总结。视频效果图如下:

Android通信平台相关API方法

一、初始化SDK

初始化SDK是首先要完成的,用于设置SDK的一些行为,包括设置对应的回调函数。代码如下:

二、登录系统

当初始化SDK完成之后,便可以实现连接服务器、验证用户身份、用户登录等。

连接服务器和登录系统都是一个异步的过程,调用后会立即返回。在回调函数中根据返回代码判断服务器是否连接成功和登录成功。

三、进入房间

登录成功后就可进入相应的房间,只有在相同房间的用户才能进行音视频通信。代码如下

1、进入房间

进入房间后系统会将该房间在线用户发送给客户端,只有在同一个房间用户才能进行音视频互交、文字聊天、文件传输等。当新用户进入房间或用户下线,都会触发异步消息通知上层应用更改状态。

2、文字聊天

成功进入房间后,便可调用API接口向指定用户或房间中所有在线用户发送文字 聊天消息。

其他用户收到文字聊天消息会触发相应的回调函数并将聊天消息显示在界面上。

3、请求其他用户的音视频

4、音视频的显示与播放

Android程序中,当收到用户的媒体流数据时,Android客户端只需提供一个SurfaceView控件,内核自动将视频媒体流数据显示在该控件上并播放声音。

四、释放资源

与前面讲的连接服务器、登录系统、进入房间对应的的是离开房间、注销系统、释放资源。代码如下:

离开房间后可再进入房间,但是注销登录和释放资源后,SDK将不再工作。在Activity生命周期结束的时候可以将占用资源释放,程序退出。

总结:这是AnyChat即时通讯SDK的应用,还有其他诸如发送文件、P2P连接、对Android设备设置、获取在线用户等非常实用功能。用java我们也能快速实现音视频通信。

时间: 2024-10-13 19:48:54

Android音视频即时通讯软件怎样通过JNI快速实现的相关文章

android音视频点/直播模块开发

前言 随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能,那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑,本文抛砖引玉,欢迎大咖交流. 一. 音视频的基础知识 1.1 基本概念 视频是什么 静止的画面叫图像(picture).连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理, 人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果.这样的连

手机Android音视频采集与直播推送,实现单兵、移动监控类应用

恰逢2014 Google I/O大会,不难看出安卓在Google的推进以及本身的开放性作用下,已经快延生到生活的各个方面了,从安卓智能手机.平板,到可穿戴的Android Ware.眼镜.手表.再到Android汽车.智能家居.电视,甚至最近看新闻,日本出的几款机器人都是Android系统的,再把目光放回监控行业,传统监控中的移动终端设备,例如:单兵设备.手持设备.车载终端设备,包括家庭监控中用到的智能设备,都可以用Android系统替代了,不仅开发容易,而且易扩展,设备也更加智能了. 图 -

Android 音视频开发入门指南

最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整一个专题详细讲一讲--目前的话,我先给出一个大的方向性的学习指南,希望对初学者有所帮助. 我一直相信带着 "任务" 去学习和实践,效率会高很多,因此我列出了一系列音视频相关的 "开发任务",从简单到困难(当然,不一定非常严格和完美,部分任务先后可调整),大家在完成任务的

Android音视频点/直播模块开发实践总结-zz

随着音视频领域的火热,在很多领域(教育,游戏,娱乐,体育,跑步,餐饮,音乐等)尝试做音视频直播/点播功能.那么作为开发一个小白,如何快速学习音视频基础知识,了解音视频编解码的传输协议,编解码方式,以及如何技术选型,如何解决遇到的坑. 一. 音视频的基础知识 1.1 基本概念 视频是什么 静止的画面叫图像(picture).连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理,人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果.这样的连续画面叫视频.当连续图像变化每秒低于

Android 音视频开发学习思路

Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来.在学习的过程中,遇到不懂的地方,要及时的去google或者请教大神,不要半知半解的过去. 初级入门篇: 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View 在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采

Android 音视频深入 七 学习之路的总结和资料分享

说个实话一开始我对基于Android如何开发音视频很迷茫,甚至对音视频开发都不是很明白,我看了Android 音视频开发入门指南 http://blog.51cto.com/ticktick/1956269这篇博客,我觉得我也许不太懂音视频能干啥,但是我找到了学习音视频的门槛,对了写这个博客的人,他的博客很多都是关于音视频的很有借鉴 开始把Android原生音频API AudioFormat.AudioRecord.AudioTrack底层三剑客搞一下,不说代码非常熟,至少整个作用和相关的参数和

Android 音视频技术之录音获取实时音量

一.实时音量相关基础知识 说到获取音量,大家首先想到的应该就是分贝(dB),分贝是一个相对单位(是一个比值,是一个数值,是一个纯计数方法). 在音频领域dB度量的是声音的强度,其计算的公式如下: 在上面的公式中,分子是测量值的声压,分母是参考值的声压(20微帕,人类所能听到的最小声压). 在Android设备传感器中,我们能获取到的物理值是振幅值,一般使用下面的公式来计算分贝值: 我们从Android SDK中读取了某段音频数据的振幅后,取最大振幅或平均振幅(可以用平方和平均,或绝对值的和平均)

Android 音视频深入 四 录视频MP4(附源码下载)

本篇项目地址,名字是<录音视频(有的播放器不能放,而且没有时长显示)>,求star https://github.com/979451341/Audio-and-video-learning-materials1.MediaMuser说明 MediaMuser:将封装编码后的视频流和音频流到mp4容器中,说白了能够将音视频整合成一个MP4文件,MediaMuxer最多仅支持一个视频track和一个音频track,所以如果有多个音频track可以先把它们混合成为一个音频track然后再使用Med

Android 音视频深入 八 小视频录制(附源码下载)

本篇项目地址,求starthttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/%E5%B0%8F%E8%A7%86%E9%A2%91%E5%BD%95%E5%88%B6 这个项目我觉得厉害,因为之前录屏用了很多代码,而这个真正实现录屏功能的代码一百行都不到 还有就是关于整个界面UI也做得不错,但是关于界面如何实现的我就不多说了,直接说如何实现录屏的代码 首先Camera如何给数据SurfaceVi