自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

徐福记456

让分享成为习惯,让开源促进成长

  • 博客(175)
  • 资源 (48)
  • 问答 (1)
  • 收藏
  • 关注

原创 FFmpeg结构体分析:AVFormatContext连接FFmpeg的桥梁

AVFormatContext对开发者开放,是连接开发者与FFmpeg内部的桥梁。结构体内部包含有AVInputFormat、AVOutputFormat、AVCodec、AVStream、AVDictionary、AVClass等。支持设置自定义IO、监听网络中断状态、设置options、直播秒开调优等。

2021-11-23 01:02:33 20075

原创 FFmpeg源码分析:AVIOContext、IO模型与协议

FFmpeg的IO模型从avio_open()方法开始,核心结构体由AVIOContext和URLProtocol组成。如果需要读取缓冲区buffer数据进行播放,可以通过自定义AVIOContext,并且实现read_packet、write_packet、seek三个方法。如果需要播放加密视频,可以自定义私有协议进行解密,实现URLProtocol的open、read、write、seek、close等方法。

2021-11-21 15:14:55 36734

原创 ijkplayer音视频同步策略分析

音视频同步是播放器的一道必选题,也是面试官常问的面试题。大家应该都知道音视频同步时钟有三种,默认使用音频时钟作为同步源。但是面试官会有其他变种问法:如果直播流的音频落后或者中断怎么办?如果没有音频流,以什么时钟作为同步源?如果有两个音频流(原声和伴奏的播放场景)怎么办?如果视频时间戳落后或者超前怎么办,不同落后程度怎么处理?如果设置倍速播放有没影响?

2021-11-21 00:01:19 37556

原创 ijkplayer视频解码播放架构分析

ijkplayer是一款跨平台播放器,支持Android与iOS播放,视频渲染使用OpenGL ES。Android端视频解码可以用mediacodec,而iOS端视频解码用VideoToolbox。而软解部分使用FFmpeg的avcodec。

2021-11-20 00:03:13 26209

原创 ijkplayer音频解码播放架构分析

ijkplayer是一款跨平台播放器,支持Android与iOS播放,音频解码默认使用FFmpeg的avcodec软解。Android端播放音频可以用OpenSL ES和AudioTrack,而iOS端播放音频默认使用AudioQueue。

2021-11-18 21:54:14 39200

原创 ijkplayer自定义协议播放加密视频

FFmpeg实现http、https、hls、tcp、rtmp、ftp这些标准协议,但是要播放加密视频怎么办呢?ijkplayer在FFmpeg的libavformat模块进行扩展ijkio、ijklongurl、ijktcphook、ijkhttphook,我们也可以在这个基础上,自定义协议来进行解密播放。主要基于URLProtocol和AVClass进行扩展,实现protocol对应的方法。

2021-11-15 19:31:31 27868

原创 ijkplayer的时序与状态图分析

ijkplayer底层基于FFmpeg的ffplay.c进行改造与扩展,中间层进行Android与iOS的适配,Android需要添加JNI接口,而iOS可以直接调用c/c++。IJK作为一款优秀的开源跨平台播放器,具备完整的状态机,而且播放时序清晰。

2021-11-15 00:10:17 36952

原创 ijkplayer的API详细介绍

ijkplayer是一款优秀的跨平台播放器,核心代码在ff_ffplay.c,然后ijkplayer.c对ff_ffplay.c进行封装。接下来要介绍的API基于ijkplayer.c,除了常用API,另外有IJKMeta、property、option。

2021-11-14 15:16:57 37273

原创 基于google升级版c++代码规范指南

有些团队所有成员写的代码都一致,10个人写的代码像1个人写的。正因为有代码规范,使得代码可读性强,方便代码review,利于后期维护。这体现了代码规范的重要性。接下来,在参考google的代码规范基础上,详细列举代码规范细节。

2021-11-11 01:02:12 36743

原创 扩展ExoPlayer实现多音轨同时播放

如果要同时播放2个音频甚至播放多个音频怎么办呢?比如同时播放伴奏声音和原唱声音,而且要做到多音轨同步。这里涉及一个核心问题,多音轨播放如何同步,因为每个音轨有对应时钟。Android平台的ExoPlayer扩展性非常好,虽然本身不支持多音轨播放,但是我们可以扩展。通过扩展TrackSelector、AudioRender、RenderFactory来支持多音轨。

2021-11-07 16:05:31 27591 11

原创 常见FFmpeg命令行全面分析

FFmpeg多媒体库支持的命令行调用分为三个模块:ffmpeg、ffprobe、ffplay。其中ffmpeg命令行常用于音视频剪切、转码、滤镜、拼接、混音、截图等;ffprobe用于检测多媒体流格式;ffplay用于播放视频。详情可查阅FFmpeg官方文档:https://ffmpeg.org/ffmpeg-all.html。............

2021-10-23 10:15:08 39382 2

原创 详细的FFmpeg编译流程与脚本分析

FFmpeg是一个跨平台的多媒体库,也是目前音视频领域应用最广泛的库。它包括llibavcodec、libavformat、libavutil、libavdevice、libavfilter、libswscale、libswresample、libpostproc等模块,其中avcodec用于编解码,avformat用于解封装,avutil是提供工具类,avdevice用于各平台的设备接入

2021-09-20 14:20:18 37454 4

原创 sox语音开源库的功能剖析

sox是一个跨平台的命令行工具,可以进行音频格式转换,也可以应用各种音效到文件中,还支持在大多数平台进行播放与录制,堪称音频界的瑞士军刀。接下来,我们详细介绍sox库支持的音频格式、支持的音效、常用的API、常用的命令行。

2021-09-13 19:06:45 38214

原创 Android图形渲染框架

Android图形渲染框架包括:Gralloc分配缓冲区,BufferQueue作为缓冲队列连接生产者与消费者,可以使用TextureView、SurfaceView和GlSurfaceView

2021-06-20 17:17:24 26186 2

原创 走进音视频的世界——新一代开源编解码器AV1

AOMedia Video 1(AV1)是一种开源、免版税的编解码器,最初设计用于Internet上的视频传输。它是由开放媒体联盟(AOMedia)于VP9的继任者开发的,成立于2015年,包括半导体公司,视频点播提供商,视频内容生产商,软件开发公司和网络浏览器供应商。AV1比特流规范包括参考视频编解码器。AV1参考编码器分别比libvpx-vp9,x264高配置文件和x264主配置文件分别实现了34%,46.2%和50.3%的数据压缩。像VP9一样,但与H.264 / AVC和HEVC不同,AV1具有免版

2021-02-14 13:17:54 89874

原创 走进音视频的世界——Matroska封装格式的介绍(二)

Matroska封装格式非常灵活、兼容性好,既适用于本地文件存储又可以进行实时流传输。本篇文章主要探讨Matroska的编解码器映射,如何封装视频流、音频流、字幕流。如果要Matroska的介绍、功能和基本结构,请查看上一篇文章:走进音视频的世界——Matroska封装格式的介绍(一)。一、Matroska流Matroska有两种传输流:文件访问(存储)和实时流传输(直播)。1. 文件存储Matroska是一种容器,支持把多媒体流封装成为文件,存储于本地。Matroska的开销很小,非常适合

2021-02-12 20:58:47 30757 1

原创 走进音视频的世界——Matroska封装格式的介绍(一)

Matroska是一个开放标准项目,基于EBML(Extensible Binary Meta Language 可扩展的二进制元语言),旨在成为多媒体格式容器的标准。EBML与XML结构有点类似,RFC8794有详细介绍,在将来的格式可扩展性方面具有显着的优势,可以兼容旧容器中的文件解析。1、Matroska功能Matroska的设计着眼于未来,它具有如下功能:在文件中快速查找 章节条目 完整的元数据(标签)支持 可选字幕/音频/视频流 模块化可扩展 错误恢复能力(即使流损坏也可以恢

2021-02-11 19:42:26 32166 2

原创 走进音视频的世界——杜比视界Dolby Vision与HDR

Dolby Vision(杜比视界)是杜比实验室推出的影像画质技术,具有更宽的色域和高动态范围HDR,亮度、色度和对比度更加逼真,从而使得整体图像更加生动。图像的明亮部分可以变得更亮,因此图像似乎具有更多的“深度”。颜色被扩展以显示更多明亮的蓝色,绿色,红色以及介于两者之间的所有颜色。一、杜比视界如下图所示,左边是具有dolby vision效果的图片,右边是普通拍摄出来的图片:杜比视界的突出特点:1、多一半的色彩:当今电视只能显示 33% 的色彩。杜比视界 (Dolby Vision)

2021-02-06 00:14:12 36283 2

原创 走进音视频的世界——杜比音效之AC3与AC4

杜比音效是由杜比实验室开发的,涉及多声道音频压缩技术。这种数字压缩技术目标是生成数字音频信号,当解码重现时,声音与原始信号相同。同时使用最低码率进行压缩,提供真实的立体环绕声。因此,杜比音效广泛应用于电影院、家庭影音、DVD、蓝光光盘。杜比音效系列主要包括:Dolby AC3、Dolby AC3 Plus、Dolby AC4和Dolby TrueHD。杜比实验室发布的环绕声系统历史演进如下表所示:解码器 编码器 年 描述 频道 杜比立体声 杜比MP矩阵 1975年

2021-02-03 20:56:29 45683 3

原创 走进音视频的世界——剖析exo播放器架构

ExoPlayer是Google开源的一款播放器,基于Android平台的可扩展多媒体播放器,支持HLS流、Smooth Streaming流、Dash流,支持扩展FFmpeg、Vpx、Av1、Flac、Opus等软件解码器。GitHub地址:https://github.com/google/ExoPlayer;开发者指南文档:https://exoplayer.dev/;API介绍文档:https://exoplayer.dev/doc/reference/overview-summary.html;另

2021-02-02 00:26:26 34877 3

原创 深入理解TCP发送速率控制协议

TCP Friendly Rate Control(TFRC),是网络环境下单播流的一种拥塞控制机制。对于TCP流,它是公平竞争带宽的。但是与TCP相比,吞吐量随时间的变化要小得多,也就是对带宽变化的响应比TCP慢,使其更适用于电话通信、流媒体等需要相对平滑发送速率的应用。因此,TFRC仅用于需要平滑吞吐量时,尤其是避免TCP响应单个丢包而将发送速率减半。推荐使用TCP发送尽可能多的数据包,或者不需要可靠机制,可以使用加法增加、乘法减小(AIMD)的拥塞控制方案,与TCP使用的参数类似。TFRC是为发送固定

2021-01-27 20:57:23 33633

原创 2020Google开发者大会总结

今年比较特殊,由于疫情原因,Google开发者大会改为线上形式。但是依然如期举办,热情不减,今年核心主题是“代码不止”,分为6场线上科技盛会。11月16日,主题演讲,由Google大中华区总裁陈俊廷作主题报告;17日,主题是“更卓越的开发体验”,包括Android、Google Play、Chrome OS的性能改进;18日,主题是“高效的前端开发”,包括Flutter、Web.dev、Material Design高效的跨平台渲染;19日,主题是“机器学习技术”,包括TensorFlow与Google女性

2020-11-23 00:54:59 12259 6

原创 那些年曾经看过的书——工作篇

工作以后,主要是看一些与工作相关的书,比如Android相关:Android开发艺术探索、深入理解Android内核设计思想、Android C++高级编程。音视频相关:FFmpeg从入门到精通、WebRTC Native开发实战、OpenGL ES3.0编程指南、音视频开发进阶指南、在线视频技术精要。语言相关:C++ Primer Plus、Java编程思想。操作系统/虚拟机相关:深入理解Java虚拟机、深入理解计算机系统。其他书籍:雷军传、硅谷之火、程序员自我修养、卓有成效的管理者等。

2020-11-07 16:00:44 20793 14

原创 Android音视频全面介绍与代码实践之音效(四)

Android在应用层提供丰富的多媒体接口,本文主要介绍音效处理:均衡器风格、预设混响、重低音调节、音量增强、可视化动态频谱,这些音效都使用audioSessionId进行绑定。让用户可选择/设置自己喜欢的风格,身临其境地感受不同歌曲的跳动旋律。方便开发者进行二次开发,打造出酷炫的音乐播放器。

2020-10-21 09:00:28 21892 2

原创 走进音视频的世界——音视频解码

音视频文件是经过编码、封装而成的。那么反过来,要播放音视频文件,首先得解封装、解码。上一篇博客讨论到音视频编码:https://blog.csdn.net/u011686167/article/details/108590762,我们来个上下呼应,本文与大家探讨一下音视频解码。本质上,是按照既定的解码协议去解析编码内容,也就是编码的逆过程。常见的视频解码器有:H264、H265、VP8、VP9、MPEG4、MJPEG、WMV3、MSMPEG4V3,常见的音频解码器有:MP3、AAC、FLAC、AC3、OPU

2020-09-29 00:13:02 23152

原创 走进音视频的世界——音视频编码

音视频流是通过特定编码器压缩,由一系列的压缩图像/语音帧组成。当然可能存在多种语言多音轨,每个音轨之间的音频流相互独立。还可能存在内置字幕,常见的字幕格式有sub、smi、ssa、srt等。但是,本篇文章讨论的主角是音视频编码,常见的视频编码有h264、h265、vp9、mpeg4、mjpeg、wmv3、av1(Alliance for Open Media Video 1,由开放媒体联盟推出,对标h265,旨在成为下一代视频编码技术标准),常见的音频编码有mp3、aac、amr_nb、amr_wb、ac3

2020-09-19 00:00:45 24678

原创 走进音视频的世界——音频封装格式

音频封装格式一般由:多媒体信息+音频流+封面流+歌词流组成。有些音乐会包含封面和歌词,则对应有封面流、歌词流。多媒体信息包括:标题、艺术家、专辑、作曲、音乐风格、日期、码率、时长、声道布局、采样率、音频编码器等。而音频封装包括:mp3、m4a、ogg、amr、wma、aac、wav、flac、ape等。前面两篇文章介绍过相关概念走进:音视频世界——音视频的基本概念、走进音视频世界——视频封装格式。以下面问题为出发点,揭开音频封装格式的面纱:① 音乐封面如何获取?② 音乐歌词如何获取与显示?.

2020-09-14 22:07:42 26215

原创 走进音视频的世界——视频封装格式

音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据。通用的封装格式由:文件标识头+多媒体信息+音视频(字幕)轨+视频帧索引块组成,如果是纯音频,后面可能还有歌词。音视频的封装格式就是通过解析文件标识头进行判断的,然后解析多媒体信息从而获取时长,再解析视频帧索引块,最后根据索引块去获取对应时间戳的视频帧。音视频封装格式存储的字段包括:时长、码率、音视频编码器、分辨率(宽x高)、帧率、像素格式、旋转角度、采...

2020-09-08 00:37:05 26041

原创 走进音视频的世界——音视频的基本概念

音视频通用的基本概念有码率、时长,而不同音视频有不同的封装格式、编码协议。其中视频关键参数有分辨率、帧率、画质、旋转角度、像素格式,而音频关键参数有采样率、声道数、声道布局、音质、采样数、采样位数、帧时长。接下来与大家详细探讨。...

2020-08-31 01:35:02 29676 8

原创 五种方案实现视频镜像

视频镜像一般是指,以视频x轴中心点为对称轴,左右内容互相交换。实现视频镜像功能,可以从解码层、渲染层、显示层这三个层次入手。解码层需要对解码出来的每一帧进行镜像处理,以FFmpeg软解处理为例,比较耗时,也占用更多内存空间,从性能效率角度考虑不太可取。但是,可以同时添加滤镜、模糊效果、文字与动画贴纸等等。当然,渲染层使用openGL也可以实现这些功能,同时也可以做镜像。显示层如果使用TextureView,可以通过设置旋转实现镜像,用法最为简单。一、显示层视频播放一般使用SurfaceView、GL

2020-08-28 00:44:40 30754 11

原创 NDK编译脚本:Android.mk or CMakeLists.txt

Android NDK以前默认使用Android.mk与Application.mk进行构建,但是在Android Studio2.2之后推荐使用CMake进行编译。Cmake是跨平台编译工具,全称为cross platform make,内建c、c++、java自动相依性分析功能,关于Cmake更多详情请参考官网:https://cmake.org/documentation/。下面我们对比下Android.mk与CmakeLists.txt的语法。一、Android.mk语法以动态库编译hell

2020-05-31 23:10:00 33083

原创 掌握这些概念,不用担心看不懂OpenGL ES着色语言了

在OpenGL ES图形学中,着色语言(Shading Language)是一门必修课。在看openGL代码时,都会有着色语言的身影,它有自己的一套语法和格式。提供给我们进行编程的包括顶点着色器和片元着色器,它们都遵循着色语言语法。...

2020-04-01 00:50:17 46547 2

原创 人生面试官:你今天学习了吗

这段时间正逢疫情蔓延全国,有些人在家办公,有些人延缓上班,却有那么一群人在一线与疫情战斗,成为最美丽的逆行者。

2020-02-21 16:01:58 42089

原创 FFmpeg之FFprobe检测多媒体格式

FFmpeg里面有一个模块FFprobe(https://ffmpeg.org/ffprobe.html)专门用来检测多媒体格式数据,它的作用类似Android中的MediaMetadataRetriever。FFprobe支持检测format、streams、frames,用法与FFmpeg类似,我们可以单独使用,也可以结合在一起使用,下面举例说明一下:1、format仅是显示forma...

2020-01-12 23:43:50 44185

原创 Android播放器拖动进度条的小图预览

播放器拖动预览,让用户提前了解视频的波澜迭起情节,先走马观花看一遍精彩部分,满足一下好奇心,这就是拖动预览的意义所在。那么我们该如何打造高性能、高效率、高可靠的拖动预览呢?首先,小图预览强调足够小,因为预览画面分辨率没必要高清,分辨率越小解码速度越快、占用内存与CPU资源越低;其次,硬解优先,绑定Surface,解码后直接渲染到Surface上;另外,不必要解码音频,视频帧也可以选择性解码,比如只...

2019-11-19 01:51:32 38358

原创 Android悬浮窗播放视频

大家应该很喜欢这样的场景:一边打游戏一边看视频,生活娱乐两不误。这样应该怎么去实现呢?Android有提供悬浮窗API,使用悬浮窗播放视频,可以悬浮在其他应用上。有人可能会说,悬浮窗是不是会遮挡界面,导致用户体验不够好。总是有办法解决的,我们可以设计一个灵活的悬浮窗,窗口可以随时调整大小、任意拖动位置,这样就完美了。让我们看看小窗口播放效果。首先,需要在Manifest.xml里申请权限:...

2019-08-02 01:03:18 38881 3

原创 我们需要掌握的Kotlin之各种函数

Kotlin的函数可以定义在文件顶部,也就是说不需要创建一个类来持有一个函数。另外,Kotlin函数还包括:本地函数、成员函数、扩展函数、内联函数、高阶函数、泛型函数、递归函数。一、本地函数本地函数是函数内部包含另一个函数,也就是函数嵌套,示例代码如下:fun dfs(graph: Graph) { fun dfs(current: Vertex, visited: Set&...

2019-05-26 23:50:46 35302

原创 Flutter之我们需要掌握的知识点

Flutter是一套高效的跨平台免费开源SDK,可支持在移动端的Android、iOS进行开发,也支持Web桌面端、嵌入式界面开发。现在已经更新到1.5版本,下面来介绍Flutter概念、Flutter能够做什么、Flutter使用什么语言开发、Flutter框架、Flutter构建原理、Flutter如何在Android与iOS运行等等。一、Flutter是什么Flutter是Googl...

2019-05-12 22:31:01 35721

原创 Android Q之气泡弹窗

在Android Q中,用户可以借助气泡,轻松地在设备上任何位置进行多任务处理。气泡内置于“通知”系统中,它会浮动在其他应用的上层,并会跟随用户的移动而移动到屏幕的任何位置,用于取代SYSTEM_ALERT_WINDOW。气泡可以展开显示应用功能和信息,并在不使用时折叠起来。当设备处于已锁定状态或始终保持活动状态,气泡会像通知那样显示。气泡弹窗效果如下图:一、气泡配置信息气泡是一种可...

2019-05-11 23:51:54 39106

原创 Android Q沙盒机制之分区存储

为了让用户更好地控制自己的文件,Android Q更改了应用访问设备外部存储空间中文件的方式。Android Q用更精细的媒体特定权限来替换READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,并且无需特定权限,应用即可访问自己在外部存储设备的文件。1、针对应用私有文件的隔离存储沙盒对于每个应用,Android Q 都会创建一个“隔离存储沙盒”,以限...

2019-05-11 12:56:48 43062 3

仿微信底部栏透明度渐变效果并且带红点提醒和未读数统计

仿微信底部栏透明度渐变效果,当前页面底部栏颜色逐渐变浅,将要切换到的页面底部栏颜色逐渐变深。并且可设置红点提醒和未读数统计,当然不需要显示了也可以隐藏。

2016-12-15

google为android打造的响应式编程agera

google为android打造的响应式编程agera,类似rxjava与rxandroid、rxbus、rxbinding的结合体,提供五大核心:content、database、net、rvdatabinding、rvadapter

2016-11-12

android客户端语音聊天

android客户端的语音聊天:从录音到发送再接收播放。支持手势上滑取消发送,自设定录音时长,10s倒计时提醒,未读语音消息红点提示,未读语音连续播放,可暂停播放,支持切换播放模式(听筒播放与扬声器播放)。

2016-11-10

带动画的弧形仪表盘统计控件

弧形仪表盘统计控件,根据总数自动标志刻度线,弧形中间可显示当前人数与总人数以及百分比,进度条发生改变时有动画渐变效果,调用简单只需传入总人数与当前人数。

2016-11-06

android插件化加载并启动外部apk

采用360提供的DroidPlugin方案,通过插件化加载安装,并启动外部apk。需要为插件预申请对应权限。

2016-11-01

仿支付宝咻一咻波纹扩散动画

仿支付宝咻一咻波纹扩散动画,使用属性动画组合播放,可设置波纹圆圈个数、放大倍数、播放延时时间、圆圈半径、圆圈颜色

2016-10-30

利用RecyclerView实现垂直滑动的ViewPager

利用自定义RecyclerView实现垂直滑动的ViewPager,在垂直方向可以上下滑动,换页过程中加上切入切出的动画。做成签到列表,点击签到(模拟)请求网络成功后,提示签到成功延迟2s,该页面从签到列表移除。

2016-10-22

群成员@提醒

首先,在编辑框输入@字符,跳转到选择群成员界面:支持多选、全选、反选、根据姓名与手机号码搜索。选择完成点击确定后,选中的群成员自动填充到编辑框,并且用spannable上色。点击群成员区域,设置光标落在尾处,支持删除。模拟未读@消息提醒,右上角有悬浮按钮,点击后滑动到未读消息处。

2016-10-07

android与js互相调用

android调用js方法向网页输入文字,js调用android本地相册图片、调用摄像头拍照、调用本地视频播放。

2016-10-07

类似微信QQ分享我的位置

与微信QQ的即时消息中分享位置相似,点击查看位置按钮即可定位我的当前位置,支持地理位置模糊搜索,有位置列表可选择,地图支持缩放、拖动查看。返回经纬度、地址与位置截屏,使用自定义控件展示位置截屏图片附着所处地址,点击图片可查看位置详情。

2016-09-22

支持拍照的图片选择器

可设置选择图片最大数量,支持拍照与本地相册选择,支持手势缩放与拖动预览。采用facebook开源的图片加载库fresco进行图片浏览。图片尺寸与手机屏幕适配,按比例压缩不变形。采用recylerView展示选中图片,支持添加、删除与点击预览。

2016-09-20

android利用windowmanager实现悬浮窗

核心在于WindowManager,通过它创建一个LayoutParams对象,然后利用该对象设置flag、gravity、xy坐标点。它提供三个方法:addView()、updateLayout()、removeView()。分别对应是添加view、更新view、移除view。主要分析更新view的实现过程:实现触摸事件监听,重写onTouch()方法,在ActionDown时,利用getRawX和getRawY得到x1、y1,在ActionMove时,利用getX和getY获取移动过程的x2、y2,两者作差后作为更新的view对应的xy坐标,调用updateLayout()实现更新。

2016-09-15

垂直换行滚动广告

自定义一个控件MarqueeView实现动画切入切出的垂直换行,可设置动画时间、换行时间价间隔,控制广告的播放与暂停,动态配置广告。

2016-09-12

Android自定义GridView长按拖动排序

android自定义GridView长按拖动排序,类似支付宝首页,震动提示,固定最后一个“更多”item。退出应用程序后,保存修改的item位置到数据库,实现记住修改位置。

2016-03-18

android自定义GridView拖拽排序

android自定义GridView长按拖动排序,类似支付宝首页,震动提示,固定最后一个“更多”item。退出应用程序后,保存修改的item位置到数据库,实现记住修改位置。

2016-03-18

android人脸识别

基于android平台,实现在线人脸识别、检测、聚焦,离线人脸检测,动态视频人脸检测(支持多脸),正确识别率达到99%,带着眼镜也可以正确识别。

2016-01-23

android多线程断电续传下载文件

android平台根据文件大小,可设置线程数,下载记录保存在数据库,下载完毕删除记录,实现断电续传下载。

2016-01-22

android客户端远程操作数据库

基于android客户端(ADT22、API18),通过HTTPGet与服务端通信,在URL传输参数指令,读取服务端反馈回来的结果,实现远程操作MySQL数据库。服务端基于MyEclipse10环境,使用servelet+struts2+tomcat,接收客户端HTTP请求,实现连接数据库,对数据库增删查改等。

2016-01-21

android操作MySQL数据库

基于android平台,通过JDBC连接MySQL数据库,实现增删查改操作

2016-01-21

http请求json并解析数据

利用tomcat作为服务器,客户端采用HTTP方式请求json数据并进行解析

2016-01-19

rfc3711_srtp.pdf

srtp为安全加密的rtp传输,增加ssl握手协议

2022-01-09

rfc3489_STUN.pdf

WebRTC的打洞过程,使用STUN会话遍历访问防火墙

2022-01-09

rfc7826_rtsp.pdf

rtsp实时传输流协议,包括register、setup、play、pause、teardown等控制

2022-01-09

rfc5506_RTCP.pdf

rtcp音视频实时传输控制协议,统计丢包、延迟

2022-01-09

neon指令硬件加速_CodingForNeon.pdf

neon指令实现ARM平台的硬件加速,SIMD单指令多数据,寄存器并行运算

2022-01-09

hls直播协议_rfc8216_hls.pdf

hls直播协议,描述hls工作原理、m3u8结构、ts流传输

2022-01-09

混响音效_HybridReverb.pdf

混响音效原理介绍与控制参数

2022-01-09

android平台的车牌识别so库

支持车牌的实时识别,支持蓝色、黄色、绿色新能源等车牌,识别耗时比较短,大概单个车牌是180ms,识别率比较高

2019-02-23

android平台的车牌识别

基于openCV的车牌检测结合深度学习进行车牌识别,支持蓝色、黄色、新能源车牌

2019-01-06

基于ORM的数据库框架Room

基于ORM的数据库框架Room,Android原生API,官方推荐使用,类似GreenDAO数据库。

2018-09-24

window平台的nginx rtmp服务器

window平台的nginx rtmp服务器,点击nginx.exe就可以开启服务,在网页输入rtmp推流地址就可以实时拉流直播,也可以使用ijkplayer或者ffplay进行播放

2018-07-12

Android端基于TensorFlow进行图像分类

Android端基于TensorFlow进行图像分类,使用Assets目录训练好的样本库和标签文件,识别率相当准确。

2018-06-30

android端基于深度学习的车牌识别

android端,基于openCV与深度学习,实现快速准确的车牌识别。平均识别耗时350ms左右,采集100样本识别准确率达到95%。识别过程:1、使用openCV确定车牌左右、上下区域;2、车牌倾斜判断与校正;3、滑动切割字符;4、深度学习对每个字符进行识别

2018-04-23

android端采用FFmpeg实现音频拼接/剪切/混音与转码

android端采用FFmpeg,传入命令行调用run()方法,实现音频拼接/剪切/混音与转码

2018-01-23

android端实时车牌识别

android端,基于openCV与深度学习,实现快速准确的车牌识别。平均识别耗时350ms左右,采集100样本识别准确率达到95%。识别过程:1、使用openCV确定车牌左右、上下区域;2、车牌倾斜判断与校正;3、滑动切割字符;4、深度学习对每个字符进行识别

2018-01-09

android注入dex实现热修复

android通过反射注入dex到dexElements数组,实现bug的热修复

2018-01-05

android版美颜宠萌相机

android平台的美颜相机,基于openCV进行人脸检测,添加各种宠萌效果

2018-01-01

ndk处理图片:添加文字和图片水印

android平台,ndk处理图片,添加文字和图片水印,可灵活控制水印的位置

2017-12-27

使用NDK拼接长图

使用NDK对多张图片进行拼接,先对每张图片进行预处理:压缩,剪裁宽度高度一致,最后得到一张长图,看起来效果很酷。美图秀秀的必备技能。

2017-12-27

Android基于socket的TCP通信

基于socket套接字的TCP通信,定时发送心跳包以保持长连接,使用守护线程来守护心跳线程,保证心跳线程持续工作。如果断开连接,启动重连接机制,随着重连接次数增加,连接时间拉长,如果重连接次数达到10次,认为网络已断开,放弃连接服务端。(待完善,客户端离线消息应该使用数据库保存,等网络重新建立连接,推送给服务端。)

2017-04-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除