本文基于Android端的RTMP播放器实现过程,介绍了RTMP推拉流库、Android MediaCodec Java层与C层接口、OpenSL ES接口、OpenGL ES接口、EGL接口、以及音视频相关知识。具体播放器代码可直接在官方地址查看:oarplayer
在公司做了两三年IM平台开发,基本上把IM的所有能力都搭建齐全了:单聊、群聊、文本消息、语音消息、视频消息、卡片消息、音视频通话等,而且把整个聊天页面各个区域都开放了出去。
从事Andorid八点多的开发,回想起来主要是以开发SDK为主,目前主要开发各种APP给公司各业务提供服务。想起之前分配给未毕业的同事开发语音交互SDK时他问的“SDK设计有哪些规范”的问题,感觉有必要做一些整理。
本文主要介绍了Tensorflow在Android和iOS平台的构建,编译的目标文件已经是各自平台可直接使用的了。针对底层库,比如Android,我们可能只需要直接使用动态库,则直接编译出Android对应的动态库即可。编译出来的库如何使用,我们后面有时间逐步介绍。
机器学习现在应用的主要领域还是NLP、语音识别、图像识别等,之前谷歌推出了基于机器学习的语音编解码器Lyra。Lyra是一种高质量的、非常低比特率的语音编解码器,即使在最慢的网络上也可以进行语音通信。
我们通过最简单的Android项目编译了解了Bazel相关语法及规则,后续对我们学习谷歌新的基于Bazel构建的项目提供了很大帮助。后续我们介绍TensorFlow Lite在Android平台和iOS平台的编译。
在移动端应用开发场景下,不可避免的要与网络打交道。有时在网络请求失败时,我们想知道网络的质量;有时需要明确的告知用户当前网络质量(比如游戏场景实时显示延迟)。网络监控离不开最经典的TCP/IP模型,基于模型分层统计网络耗时有助于我们更清晰的了解。
IM功能开发过程中,有这么一个需求,在打开会话详情页时Intent内可以携带一些消息,用于用户从商品详情页点击联系维护人时可以携带该商品的信息。Intent内可以携带多条消息,用于跳转到会话详情页时自动发送消息。
之前介绍Bazel文章中有同学闻到Bazel与Gradle工具的差异。这篇文章我们解答这个问题。
Android常见网络优化方案
学习使用 Paint/Path/PathMeasure/PathDashPathEffect来绘制一个仪表盘
一直从事Android和音视频相关领域开发,图像处理主要基于OpenGL,最近在研究一些图像智能化相关的东西,准备把算法之类的捡起来,首先想到的就是OpenCV。OpenCV是计算机视觉中经典的专用库,其支持多语言、跨平台,逐步了解它的能力和内部的算法实现。
最近在编译Android平台的tensorflow lite库,发现官方使用的是Bazel构建工具,大概了解了下,它不仅可以构建Native层还可以构建Java层库。今天我们简单介绍下什么是Bazel,后续我们逐步深入了解Bazel构建工具,使用Bazel构建我们的Android项目。
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。
常用的数据结构,以堆、栈、单/双链表、HashMap、各种二叉树(二叉树、平衡二叉树、搜索二叉树、红黑树)最为常见。另外,像bitmap等也比较多,尤其是需要位操作的时候。树中的Trie树(字典树),在检索类题目中也非常常见。
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
基于数组的运算,是面试算法题中很大的一部分题目。很多问题的输入,都可以以数组的形式给出,所以,我们对数组特性、常见题目的掌握程度,就直接决定了我们对相关算法的解决能力。
H指数问题感觉是leetcode中比较冷门的一道题目,至少在过去笔试面试的经历中都没有遇到过。这道题目感觉也算是相对比较简单一点的中等难度题目。本系列文章会标明引用leetcode解析的部分内容,重点在于整理和阐述分析过程。
写一个程序,输出从 1 到 n 数字的字符串表示。
在前面算法题目解析:从一道题目看动态规划这篇文章中,描述了动态规划的概念、原理和典型示例,今天用几道典型的动态规划题目来做为练手,达到掌握的目的。70. 爬楼梯是一道简单题,但比较典型,先从它开始。
一道典型的动态规划题目,虽然之前在算法题目解析:从一道题目看动态规划中介绍过了动态规划的原理、应用场景和题目示例,不过也并不是所有人都能熟练掌握
符合下列属性的数组 arr 称为 山峰数组(山脉数组) :
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。
请你设计一个迭代器,除了支持 hasNext 和 next 操作外,还支持 peek 操作。
整数数组 nums 按升序排列,数组中的值 互不相同 。
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。
给定一个正整数 n ,输出外观数列的第 n 项。
编写一个函数来查找字符串数组中的最长公共前缀。
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 。返回让数组所有元素相等的最小操作次数。
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。