android

  • android
    01-31 06:38
  • android
    01-30 01:54
    FFmpeg安卓流媒体播放器开发实战-基于NDK、C++和 FFmpeg 适用人群: 掌握c++基础语法 学习本课程的学员要求: 本课程是具有很强实战性的应用编程,课程中会从原理讲解到代码实现,但由于项目有一定复杂度,希望学习本课程的同学要掌握c++的基本语法,课程中也用到java的代码但比较少,如果是c++程序员可以把我的java代码直接拿过去用,不一定要有java编程基础。 课程说明: 课程包含了对流媒体(拉流)的播放,演示了播放rtmp的香港卫视,支持rtsp摄像头和http网络视频的播放,支持访问本地的视频文件,并精确显示和控制播放进度。 课程特色: 1 课程由浅入深,原理讲解+代码实操演示,并提供全部课程源码 2 讲解如何编译Android平台的ffmpeg库,使其支持neon和硬解码,并测试性能 3 使用opengles的NDK shader高效播放yuv视频,不耗费cpu性能更优 4 代码支持硬解码(省电不耗cpu)和多线程解码(高性能每秒解码240帧1080p) 5 支持网络流媒体(rtmp,rtsp,http)可以直接拉流播放电视并支持rtsp摄像头访问 6 使用opensles NDK 原生接口播放音频,不依赖第三方库 7 课程将设计模式应用到实践-观察者、构建者、门面、代理、适配器、单件、和多线程的生产者消费者模式 课程目录: ├─1. 课程介绍及音视频基础知识 │ 1. 介绍.mp4 │ 2. 音视频基础知识Mpeg4封装格式音视频编码格式讲解.mp4 │ 3. 音视频解封装和解码原理分析.mp4 │ 4. 图形像素格式RGB和YUV格式分析.mp4 │ 5. PCM音频采样率_通道_planar等格式参数分析.mp4 │ 6. MP4标准和h264格式的NAL的GOP分析.mp4 │ ├─2. AndroidStudio开发工具和开发环境准备 │ 1. 开发所用到的工具和sdk介绍.mp4 │ 2. AndroidStudio开发工具安装使用讲解.mp4 │ 3. Android SDK目录内容分析.mp4 │ 4. AndroidNDK工具目录功能分析.mp4 │ 5. 安卓模拟器安装和第一个c++安卓程序编译运行.mp4 │ 5.1 010第一个c++安卓程序testlog8.zip.zip │ ├─3. Android NDK交叉编译FFMpeg并添加测试AS项目 │ 1. 安卓NDK相关概念ABI、NEON、JNI和CMAKE分析.mp4 │ 2. NDK中CPU的应用二进制界面ABI.mp4 │ 3. ubuntu虚拟机及常用工具安装并配置samba共享目录.mp4 │ 3.1 013ubuntu虚拟机及常用工具安装并配置samba共享目录.pdf.pdf │ 4. ffmpeg源码下载在android下的编译参数分析讲解.mp4 │ 5. 在ubuntu下交叉编译ffmpeg的android版本库.mp4 │ 6. ffmpeg通用编译bash脚本编写、硬解码、neon、多线程解码性能对比.mp4 │ 6.1 016ffmpeg通用编译bash脚本和编译好的ffmpeg安卓库.zip.zip │ 7. AndroidStudio项目配置权限、jni库路径、ABI和CMake参数和讲解.mp4 │ 8. cmake配置(导入库、头文件、链接)分析.mp4 │ 9. 创建支持ffmpeg的AndroidStudio项目并调用其接口在界面显示库配置信息.mp4 │ 9.1 019创建支持ffmpeg的AndroidStudio项目完成设置显示ffmpeg的库配置信息testffmpeg15.zip.zip │ 10. JNI和c传递文件路径并设置app的读写权限.mp4 │ 10.1 020testffmpeg_jni传递字符串参数并设置app读写权限16.zip.zip │ ├─4. FFmpeg解封装(C++ NDK) │ 1. ffmpeg SDK软硬解码流程说明.mp4 │ 2. ffmpeg音视频解封装用到的函数和结构体详解.mp4 │ 3. avformat_open_input函数详解并示例打开mp4文件.mp4 │ 3.1 023testffmpeg打开mp4文件19.zip.zip │ 4. AVFormatContext结构分析和清理代码示例.mp4 │ 5. avformat_find_stream_info探测获取封装上下文的格式信息.mp4 │ 6. AVStream和AVCodecParameters分析.mp4 │ 7. 通过遍历获取AVStream音视频流信息并打印参数.mp4 │ 7.1 027testffmpeg_通过遍历获取AVStream音视频流信息并打印参数.zip.zip │ 8. 通过av_find_best_stream获取音视频流索引.mp4 │ 9. av_read_frame读取帧数据函数分析和产生的空间问题分析.mp4 │ 10. AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解.mp4 │ 11. av_seek_frame改变播放进度函数详解.mp4 │ 12. av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况.mp4 │ 12.1 032testffmpeg_av_read_frame和av_seek_frame代码示例.zip.zip │ ├─5. FFmpeg软硬解和多线程解码(C++ NDK) │ 1. AVCodecContext解码上下文初始化讲解和视频解码器打开的代码演示.mp4 │ 1.1 033testffmpeg_AVCodecContext解码上下文初始化.zip.zip │ 2. 打开音频解码器上下文.mp4 │ 2.1 034testffmpeg_打开音频解码器上下文.zip.zip │ 3. AVFrame格式解析和空间处理函数.mp4 │ 4. avcodec_send_packet和avcodec_receive_frame函数讲解.mp4 │ 5. 音视频多线程解码代码演示.mp4 │ 5.1 37testffmpeg_完成音视频解码.zip.zip │ 6. 音视频解码性能测试neon单线程和八线程解码测试代码.mp4 │ 7. ffmpeg调用MediaCodec实现硬解码代码演示.mp4 │ 7.1 39testffmpeg_ffmpeg调用MediaCodec实现硬解码代码演示.zip.zip │ ├─6. FFMpeg音频重采样和视频格式转换和显示 │ 1. sws_getContext和sws_scale像素格式和尺寸转换函数讲解.mp4 │ 2. sws_scale像素格式转换代码演示.mp4 │ 2.1 41testffmpeg_37sws_scale像素格式转换代码演示.zip.zip │ 3. 音频重采样SwrContext格式和swr_convert相关函数详解.mp4 │ 4. swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例.mp4 │ 4.1 43testffmpeg_swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例.zip.zip │ 5. 分析GLSurfaceView和NDK接口直接显示RGB视频数据相关函数.mp4 │ 6. 使用NDK通过GLSurfaceView双缓冲空间复制完成视频的播放.mp4 │ 6.1 45testffmpeg使用NDK通过双缓冲空间复制完成视频的播放.zip.zip │ 7. 安卓视频播放窗口去掉标题栏、全屏、横屏.mp4 │ 7.1 46testffmpeg安卓视频播放窗口去掉标题栏、全屏、横屏.zip.zip │ ├─7. OpenSLES音频播放 │ 1. OpenSLES播放音频步骤和接口讲解.mp4 │ 2. 创建OpenSLES音频播放测试项目并完成引擎初始化.mp4 │ 2.1 48TestOpenSL创建OpenSLES音频播放测试项目并完成引擎初始化.zip.zip │ 3. 完成OpenSLES混音器CreateOutputMix初始化.mp4 │ 3.1 49TestOpenSL完成OpenSLES混音器CreateOutputMix初始化.zip.zip │ 4. 配置OpenSL的PCM音频输入格式.mp4 │ 4.1 50TestOpenSL配置OpenSL的PCM音频输入格式.zip.zip │ 5. 读取pcm音频文件并使用OpenSL播放.mp4 │ 5.1 51TestOpenSL读取pcm音频文件并使用OpenSL播放.zip.zip │ ├─8. EGL和OpenGLES Shader显示YUV视频 │ 1. egl和opengl_shader_glsl讲解.mp4 │ 2. testopengles_shader项目配置和创建_完成java部分代码.mp4 │ 3. 使用NDKC++完成EGL、display、surface、contex配置和初始化.mp4 │ 4. Opengl ES Shader顶点坐标和材质坐标分析.mp4 │ 5. 顶点着色器代码glsl代码编写.mp4 │ 5.1 56TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip │ 6. yuv420p片元着色器glsl编写.mp4 │ 6.1 57TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip │ 7. shader初始化完成并编译顶点和片元着色器代码.mp4 │ 7.1 58TestOpenglESshader初始化完成并编译顶点和片元着色器代码.zip.zip │ 8. program渲染程序初始化给shader传递顶点和材质顶点数据.mp4 │ 8.1 59TestOpenglESprogram渲染程序初始化给shader传递顶点和材质顶点数据.zip.zip │ 9. opengl的yuv纹理的创建和初始化.mp4 │ 9.1 60TestOpenglESopengl的yuv纹理的创建和初始化.zip.zip │ 10. OpenglES纹理数据修改和显示.mp4 │ 10.1 61TestOpenglESopengl纹理数据修改和显示.zip.zip │ 11. 通过OpenglES纹理修改完成yuv文件的播放显示.mp4 │ 11.1 62TestOpenglES通过opengl纹理修改完成yuv文件的播放显示.zip.zip │ └─9. 视频播放器项目实战一 需求和设计模式 1. 视频播放器项目设计说明和UML类图知识讲解.mp4 1.1 63UML类图箭头说明.png.png 2. 模块分解和用到的7个设计模式讲解.mp4 2.1 64安卓视频播放器类图.png.png 3. 适配器、建造者、代理模式讲解.mp4 4. 门面模式&生产者消费者模式.mp4 5. Observer观察者模式讲解和应用.mp4 6. 解码显示帧数据处理顺序图和开发计划讲解.mp4 6.1 68播放媒体文件的顺序图.png.png │ ├─10. 视频播放器项目实战二 音视频解码解封装 │ 1. 项目创建权限ABI和CMake相关库和头文件配置.mp4 │ 2. 创建安卓流媒体播放器XPlay项目并配置添加了解封装模块代码及其依赖日志类.mp4 │ 3. FFDemux的Open实现打开媒体文件.mp4 │ 4. FFdemux的Read读取帧数据接口编写.mp4 │ 4.1 72XPlayFFdemux的Read读取帧数据接口编写.zip.zip │ 5. 完成XThread线程类IDemux继承后在线程中读取帧数据.mp4 │ 6. 添加了XSleep完成XThread线程函数的停止和超时判断.mp4 │ 7. 观察者Observer模式的代码实现并使用IDemux进行测试.mp4 │ 7.1 75XPlay观察者Observer模式的代码实现并使用IDemux进行测试.zip.zip │ 8. IDecode和FFDecode模块代码创建.mp4 │ 9. FFDecode的Open打开解码器接口编写和Observer基类添加.mp4 │ 10. 添加IDemux的GetVPara获取视频XParamter参数接口用IDecode的Open测试.mp4 │ 11. 封装FFDecode解码的Send和Recv接口.mp4 │ 12. 读取媒体帧数据获取类型信息(音频、视频)存入XData.mp4 │ 13. 完成音视频解码和并重构解码器加入观察者模式.mp4 │ 14. 加入生产者消费者模式控制音视频缓冲.mp4 │ 14.1 82XPlay完成音视频解码和并重构解码器加入观察者模式,加入生产者消费者模式控制音视频缓冲.zip.zip │ ├─11. 视频播放器项目实战三 音视频播放 │ 1. IVideoView显示模块架构讲解和代码创建.mp4 │ 1.1 83XPlayIVideoView显示模块架构讲解和代码创建.zip.zip │ 2. IEGL类初始化封装java部分添加XPlay窗口类.mp4 │ 3. XShader基于yuv420p的初始化Init代码完成并测试.mp4 │ 4. XTexture初始化并完成GLVideoView的调用.mp4 │ 5. GLVideoView完成使用shader显示视频.mp4 │ 6. 完成音频重采样IResample模块初始化代码.mp4 │ 6.1 88XPlay完成音频重采样IResample模块.zip.zip │ 7. 完成音频重采样IResample模块的处理功能.mp4 │ 8. 完成了IAudioPlay和SLAudioPlay的音频播放环境初始化.mp4 │ 9. IAudioPlay的Update将音频压入缓冲队列并测试.mp4 │ 10. SLAudioPlay音频播放完成并测试对MP4文件音视频播放.mp4 │ 11. 完成硬解码并完成NV21和NV12格式的shader显示编写.mp4 │ 12. 解决android8.0下opengles不能播放的问题和音频播放的回音问题.mp4 │ 12.1 94XPlay解决android8.0下opengles不能播放的问题和音频播放的回音问题.zip.zip │ ├─12. 视频播放器项目实战四 完成架构解决同步和seek │ 1. 完成facade模式的IPlayer并实现Open接口.mp4 │ 1.1 95XPlay完成facade模式的IPlayer并实现Open接口.zip.zip │ 2. 完成Iplayer开始播放和窗口初始化接口.mp4 │ 3. 完成Builder模式的IPlayerBuilder构建IPlayer对象.mp4 │ 4. 完成IPlayerProxy代理模式并进行测试架构搭建完成.mp4 │ 5. 统一换算pts为毫秒使用IPlayer完成音视频同步播放.mp4 │ 5.1 99XPlay统一换算pts为毫秒使用IPlayer完成音视频同步播放.zip.zip │ 6. IDemux&FFdemux线程安全和Close清理函数编写.mp4 │ 7. FFdecode和FFResample线程安全处理和Close清理函数编写.mp4 │ 8. SLAudioPlay的线程安全处理和Close清理函数编写.mp4 │ 9. XEGL的线程安全处理和Close清理函数编写.mp4 │ 10. XShader线程安全处理和Close清理函数编写.mp4 │ 11. XTexture和GLVideoView的线程安全和清理函数编写.mp4 │ 12. IPlayer完成Close清理函数编写并完成多次打开视频文件的测试.mp4 │ 12.1 106XPlayIPlayer完成Close清理函数编写并完成多次打开视频文件的测试.zip.zip │ 13. 添加打开视频按钮和进度滑动条并响应打开事件.mp4 │ 14. 添加视频打开路径和香港卫视rtmp打开路径的界面.mp4 │ 15. 完成通过界面多次打开视频文件,修正了多次打开显示出现的bug.mp4 │ 16. 在835cpu的手机中测试并修正了音频播放Close的bug.mp4 │ 17. 完成了播放进度的显示并修正了硬解码参数传递错误.mp4 │ 18. 滑动条拖动Seek视频开发策略详细分析.mp4 │ 19. 完成了IDemux的Seek和界面SeekBar的事件响应.mp4 │ 20. 添加了视频播放的暂停和恢复.mp4 │ 21. 修改了视频播放到结尾再次打开会锁死的bug.mp4 │ 22. 通过手动解码帧数据完成了IPlayer控制视频播放进度的功能.mp4 │ 22.1 116XPlay通过手动解码帧数据完成了IPlayer控制视频播放进度的功能.zip.zip
    • 509
  • android
    01-30 01:44
  • android
    01-30 01:25
  • android
    01-28 02:17
  • android
    01-23 03:32
    Android自动化测试实战 Android移动端测试又一力作 JAVA篇主流工具+框架+脚本实战测试 课程目录 (1)测试工具;目录中文件数:15个 (1) appium-installer.exe (2) Cqrk21XMPeGAFjivEBoAMKDO4Yo494.exe (3) java-client-4.1.2.jar (4) monkey.7z (5) monkeyrunner.7z (6) MonkeySourceScript.java (7) monkey_playback.py (8) monkey_record.py (9) MyFirstTestActivity.apk (10) project.zip (11) re-sign.jar (12) robotium-solo-5.6.1.jar (13) selenium-java-3.0.1.zip (14) selenium-server-standalone-3.0.1.jar (15) 最新haxm-windows_v6_0_1.zip (2)视频;目录中文件数:40个 (16) 1 课程简介.flv (17) 2 那些重要的Android工具和命令你真的都掌握好了吗?.mp4 (18) 3-1 Monkey工具及常用命令参数详解.flv (19) 3-2 Monkey工具执行及日志说明.flv (20) 3-3 Monkey工具脚本功能详解.flv (21) 3-4 MonkeyServer的使用及自动化.flv (22) 4-1 MonkeyRunner及MonkeyRunner模块简介.flv (23) 4-2 MonkeyDevice模块功能详解.flv (24) 4-3 MonkeyImage模块功能详解.flv (25) 4-4 MonkeyRunner的录制回放工具详解.flv (26) 4-5 MonkeyRunner进阶-EasyMonkeyDevice详解.flv (27) 4-6 MonkeyRunner实战-自动化操作计算器计算.flv (28) 4-7 MonkeyRunner思考题.flv (29) 4-8 MonkeyRunnerd思考题解答.flv (30) 5-1 Android单元测试类及其关系.flv (31) 5-2 Instrumentation框架及其使用.flv (32) 5-3 Robotium自动化测试框架简介.flv (33) 5-4 Robotium白盒自动化测试.flv (34) 5-5 Android Apk 重签名的坑.flv (35) 5-6 Robotium黑盒自动化测试.flv (36) 5-7 Robotium核心API详解.flv (37) 5-8 Robotium实战-网APP自动化测试.flv (38) 5-9 Robotium录制回放工具详解.flv (39) 6-1 UiAutomator自动化测试框架简介.flv (40) 6-2 UiAutomator测试工程的创建和执行.flv (41) 6-3 UiAutomator的快速调试.flv (42) 6-4 UiDevice对象功能详解.flv (43) 6-5 UiSelector对象功能详解.flv (44) 6-6 UiObject对象功能详解.flv (45) 6-7 UiConnection对象功能详解.flv (46) 6-8 UiScrollable对象功能详解.flv (47) 6-9 UiAutomator实战-自动化设置系统语言.flv (48) 7-1 Appium自动化测试框架简介.flv (49) 7-2 Appium自动化测试框架部署.flv (50) 7-3 Appium测试工程的创建和执行.flv (51) 7-4 Appium的配置-DesiredCapabilities介绍.flv (52) 7-5 Appium定位应用界面元素的方法.flv (53) 7-6 Appium测试Hybrid应用详解.flv (54) 7-7 Appium实战-APP自动化测试.flv (55) 8 课程总结.flv
    • 547
  • android
    01-04 04:29
  • android
    11-14 04:28
    简介 该课程包含 C/C++ 基础和进阶、JNI 基础实战、数据结构和算法、智能识别、Linux 内核和音视频实战,是大家从中级到高级过渡的一个必经过程。 第一部分:入门 C 的基础、C++ 的基础和 JNI 基础,分析 JNIEnv 的实现原理,手写 Android 共享内存的序列化过程等等。 第二部分:深入 C 的进阶和 C++ 的进阶,分析内存四驱模型和项目开发模型,强化二级指针与多级指针,刨析 STL 的设计理念与算法等等。 第三部分:主讲数据结构和算法,这部分知识是面试的必备基础,同时也是为后面的智能识别与音视频开发做铺垫,我们不能只停留在 API 的调用阶段。数组、链表、栈、队列、二叉树、AVL 树、红黑树、哈夫曼编码、图、LeetCode 刷题等等。 第四部分:主讲 OpenCV 智能识别,首先带大家熟悉常用 API,其次带大家手写实现算法,最后带大家实战银行卡扫描,二维码检测,实现人脸美容,实时人脸识别等等。 第五部分:主讲 Linux 内核,Android 系统是基于 Linux 内核的,我们熟悉了 Linux 内核也就熟悉了 Android 底层。应用编译运行的工作过程,进程创建与进程管理,IPC 进程间通信,Binder 驱动的底层原理等等。 第六部分:主讲音视频开发,自己动手编译 FFmpeg,打造一款万能的音视频播放器,多线程队列解码播放,录制视频加背景音乐,OpenGL 渲染相机添加水印,H264 协议详解,Android 直播推拉流等等。 . ├── 01.NDK开发前奏 - x团参数加密和签名校验 │ ├── 01.怎么架构新项目.wmv │ ├── 02.加密算法介绍.wmv │ ├── 03.MD5参数加密实现.wmv │ ├── 04.APP签名校验.wmv │ └── 笔记和资源 │ ├── 01.NDK开发前奏 - x团参数加密和签名校验.mht │ └── NDK_Day01.rar ├── 03.NDK开发前奏 - 视频转码压缩 │ ├── 01.视频转码压缩介绍.wmv │ ├── 02.ffmpeg整合集成.wmv │ ├── 03.压缩回调处理.wmv │ └── 笔记和源码 │ └── NDK_Day03.rar ├── 05.NDK开发前奏 - 实现支付宝人脸识别功能 │ ├── 01.opencv 介绍和整合.wmv │ ├── 02.人脸识别实现的思路.wmv │ ├── 03.opencv图像灰度处理.wmv │ ├── 04.实现人脸识别.wmv │ └── 笔记和源码 │ ├── 05.NDK开发前奏 - 实现支付宝人脸识别功能.mht │ └── NDK_Day05.rar ├── 06.C基础 - 基本数据类型与指针入门 │ ├── 01.C开发的一些准备工作.wmv │ ├── 02.基本数据类型.wmv │ ├── 03.变量地址和指针变量.wmv │ ├── 04.通过指针变量修改值.wmv │ ├── 05.面试题讲解.wmv │ └── 笔记和源码 │ ├── 06.C基础 - 基本数据类型与指针入门.mht │ └── NDK_Day06.rar ├── 07.C基础 - 指针运算和函数指针 │ ├── 01.二级指针和多级指针 .wmv │ ├── 02.数组和数组指针.wmv │ ├── 03.指针循环遍历和赋值.wmv │ ├── 04.指针与数组的几种写法.wmv │ ├── 05.函数指针.wmv │ └── 源码和笔记 │ ├── NDK_Day07.rar │ └── 笔记.png ├── 08.C基础 - 动态开辟内存和字符串 │ ├── 01.上次内容回顾.wmv │ ├── 02.如何文档阅读.wmv │ ├── 03.静态内存开辟和动态内存开辟.wmv │ ├── 04.动态内存开辟的实用场景.wmv │ ├── 05.realloc和动态内存开启注意事项.wmv │ └── 源码和笔记 │ ├── 08.C基础 - 动态开辟内存和字符串.mht │ ├── C语言中文帮助文档.rar │ ├── NDK_Day08.rar │ ├── realloc.png │ ├── 函数指针.png │ └── 动态内存开辟.png ├── 09.C基础 - 字符串常见操作和指针练习 │ ├── 01.字符串长度.wmv │ ├── 02.字符串类型转换.wmv │ ├── 03.字符串比较.wmv │ ├── 04.字符串查找和拼接.wmv │ ├── 05.字符串截取和大小写转换.wmv │ └── 笔记和源码 │ ├── 09.C基础 - 字符串常见操作和指针练习.mht │ └── NDK_Day09.rar ├── 10.C基础 - 结构体联合体和枚举 │ ├── 01.字符串替换讲解.wmv │ ├── 02.结构体和结构体指针.wmv │ ├── 03.结构体数组.wmv │ ├── 04.字节对其和结构体大小计算.wmv │ ├── 05.联合体和枚举.wmv │ └── 笔记和源码 │ ├── 10.C基础 - 结构体联合体和枚举.mht │ └── NDK_Day10.rar ├── 11.C基础 - 文件操作 │ ├── 01.读取文本文件.wmv │ ├── 02.拷贝文件.wmv │ ├── 03.文件加解密和文件切割.wmv │ └── 笔记和源码 │ └── NDK_Day11.rar ├── 12.JNI 基础 - JNIEnv 的实现原理 │ ├── 01.JNI开发的一般流程.wmv │ ├── 02.详解 .h 头文件和实现文件.wmv │ ├── 03.JNIEnv的实现原理.wmv │ ├── 04.C 访问 Java 属性.wmv │ ├── 05.C 访问 Java 方法.wmv │ └── 笔记和源码 │ ├── 12.JNI 基础 - JNIEnv 的实现原理.mht │ ├── JNIEnv的原理和流程.png │ ├── NDK_Day12_Java.rar │ └── NDK_Day12_VS.rar ├── 13.JNI 基础 - Native 层构建 Java 对象 │ ├── 01.作业讲解.wmv │ ├── 02.常量指针和指针常量.wmv │ ├── 03.Native 层构建 Java 对象.wmv │ ├── 04.设置属性练习.wmv │ └── 笔记和源码 │ ├── 13.JNI 基础 - Native 层构建 Java 对象.mht │ ├── NDK_Day13_Java.rar │ └── NDK_Day13_VS.rar ├── 14.JNI 基础 - Android 共享内存的序列化过程 │ ├── 01.Java对象与C对象对应.wmv │ ├── 02.Parcel 源码解析.wmv │ ├── 03.自己动手实现内存共享.wmv │ ├── 04.共享内存面试题讲解.wmv │ └── 笔记和源码 │ ├── 14.JNI 基础 - Android 共享内存的序列化过程.mht │ ├── 1.png │ ├── NDK_Day14.rar │ └── 无标题.png ├── 15.JNI 基础 - 缓存策略和异常处理 │ ├── 01.数组的细节处理.wmv │ ├── 02.局部引用和全局引用.wmv │ ├── 03.静态缓存策略.wmv │ ├── 04.jni的异常处理.wmv │ └── 笔记和源码 │ ├── 15.JNI 基础 - 缓存策略和异常处理.mht │ ├── NDK_Day15_Java.rar │ └── NDK_Day15_VS.rar ├── 16.C进阶 - 内存四驱模型 │ ├── 01.数组参数传递.wmv │ ├── 02.数据类型剖析.wmv │ ├── 03.变量的本质.wmv │ ├── 04.内存四驱模型.wmv │ └── 笔记和源码 │ ├── 16.C进阶 - 内存四驱模型.mht │ └── NDK_Day16.rar ├── 17.C进阶 - 项目开发模型强化 │ ├── 01.内存四驱模型.wmv │ ├── 02.通过指针间接赋值的意义.wmv │ ├── 03.野指针和 NULL 地址.wmv │ ├── 04.定义字符串的几种区别.wmv │ ├── 05.项目开发模型强化.wmv │ └── 笔记和源码 │ ├── 01.间接赋值.png │ ├── 02.通过指针间接赋值.png │ ├── 03.野指针.png │ ├── 04.字符串的不同之处.png │ ├── 17.C进阶 - 项目开发模型强化.mht │ └── NDK_Day17.rar ├── 18.C进阶 - 二级指针和多级指针 │ ├── 01.指针使用的注意事项.wmv │ ├── 02.二级指针的内存模式.wmv │ ├── 03.多级指针.wmv │ └── 笔记和源码 │ ├── 01.NULL地址的强化.png │ ├── 02.指针数组和二级指针.png │ ├── 03.二维数组的第三种定义方式.png │ └── 18.C进阶 - 二级指针和多级指针.mht ├── 19.C进阶 - 结构体中的高级话题 │ ├── 01.结构体赋值操作.wmv │ ├── 02.深拷贝和浅拷贝.wmv │ ├── 03.结构体的偏移量强化.wmv │ └── 笔记和源码 │ ├── 19.C进阶 - 结构体中的高级话题.mht │ └── 结构体套指针.png ├── 20.C++基础 - 引用和函数重载 │ ├── 01.c 和 c++ 的区别.wmv │ ├── 02.常量.wmv │ ├── 03.引用和常量引用.wmv │ ├── 04.函数重载和默认参数.wmv │ ├── 05.类的初探.wmv │ └── 笔记和源码 │ ├── 20.C++基础 - 引用和函数重载.mht │ ├── NDK_Day20.rar │ └── 引用实例.png ├── 21.C++基础 - 构造函数、析构函数和拷贝构造函数 │ ├── 01.构造函数.wmv │ ├── 02.析构函数.wmv │ ├── 03.malloc、free、new、delete 区别.wmv │ ├── 04.拷贝构造函数和调用场景.wmv │ └── 笔记和源码 │ ├── 01.指针赋值.png │ ├── 02.拷贝构造函数赋值.png │ ├── 21.C++基础 - 构造函数、析构函数和拷贝构造函数.mht │ └── NDK_Day21.rar ├── 22.C++基础 - 对象大小和友元类 │ ├── 01.可变参数.wmv │ ├── 02.static 关键字.wmv │ ├── 03.const 修饰函数.wmv │ ├── 04.友元函数和类.wmv │ └── 源码和笔记 │ ├── 21.C++基础 - 对象大小和友元类.mht │ └── NDK_Day22.rar ├── 23.C++基础 - 操作符重载和类的继承 │ ├── 01.加减运算符重载.wmv │ ├── 02.条件运算符和括号运算符重载.wmv │ ├── 03.类对象的继承.wmv │ └── 笔记和源码 │ ├── 23.C++基础 - 操作符重载和类的继承.mht │ └── NDK_Day23.rar ├── 24.C++基础 - 虚继承、虚函数和模板函数 │ ├── 01.属性初始化.wmv │ ├── 02.虚继承.wmv │ ├── 03.C++中的多态.wmv │ ├── 04.抽象类和接口.wmv │ ├── 05.模板函数.wmv │ └── 笔记和源码 │ ├── 24.C++基础 - 虚继承、虚函数和模板函数.mht │ └── NDK_Day24.rar ├── 25.C++基础 - 实现 Native 层的 ArrayList │ ├── 01.编译流程.wmv │ ├── 02.模板类.wmv │ ├── 03.ArrayList源码分析.wmv │ ├── 04.实现Native层的ArrayList.wmv │ └── 笔记和源码 │ ├── 25.C++基础 - 实现 Native 层的 ArrayList.mht │ ├── NDK_Day25_AS.rar │ └── NDK_Day25_VS.rar ├── 26.C++基础 - 异常处理和字符串操作 │ ├── 01.类型转换.wmv │ ├── 02.实现System.arrayCopy.wmv │ ├── 03.c++中的异常处理.wmv │ ├── 04.字符串操作.wmv │ └── 源码和笔记 │ ├── 26.C++基础 - 异常处理和字符串操作.mht │ ├── NDK_Day26_AS.rar │ └── NDK_Day26_VS.rar ├── 27.C++进阶 - Const关键字增强和引用的本质剖析 │ ├── 01.string字符串的常见操作.wmv │ ├── 02.const 关键增强字.wmv │ ├── 03.引用的加强.wmv │ ├── 04.NDK 异常处理增强.wmv │ └── 笔记和源码 │ ├── NDK_Day27_VS.rar │ └── c++中的常量.png ├── 28.C++进阶 - STL 容器的基本介绍和使用 │ ├── 01.vector和stack容器.wmv │ ├── 02.queue基本操作.wmv │ ├── 03.list增删改查.wmv │ ├── 04.谓词和函数对象.wmv │ └── 笔记和源码 │ ├── 28.C++进阶 - STL 容器的基本介绍和使用.mht │ └── NDK_Day28.rar ├── 29.C++进阶 - STL 函数对象和谓词 │ ├── 01.map容器介绍和使用.wmv │ ├── 02.multimap容器介绍和使用.wmv │ ├── 03.容器对象拷贝构造函数.wmv │ ├── 04.一元谓词和二元谓词.wmv │ └── 笔记和源码 │ ├── 29.C++进阶 - STL 函数对象和谓词.mht │ └── NDK_Day29_VS.rar ├── 30.C++进阶 - STL算法设计理念分析 │ ├── 01.预定义函数对象.wmv │ ├── 02.函数适配器.wmv │ ├── 03.STL算法设计理念分析.wmv │ ├── 04.源码阅读的经验总结.wmv │ └── 源码和笔记 │ ├── 30.C++进阶 - STL算法设计理念分析.mht │ └── NDK_Day30_VS.rar ├── 31.Android智能识别 - 银行卡区域裁剪 │ ├── 01.银行卡识别的思路分析.wmv │ ├── 02.bitmap和mat转换.wmv │ ├── 03.截取银行卡区域.wmv │ └── 源码和资源 │ ├── 31.Android智能识别 - 银行卡区域裁剪.mht │ └── NDK_Day31_AS.rar ├── 32.Android智能识别 - 银行卡数字识别 │ ├── 01.裁剪银行卡区域.wmv │ ├── 02.过滤填充干扰区域.wmv │ ├── 03.分割获取银行卡数字.wmv │ ├── 04.字符串粘连处理.wmv │ └── 笔记和源码 │ ├── 32.Android智能识别 - 银行卡数字识别.mht │ └── NDK_Day31_AS.rar ├── 33.数据结构算法 - 数组与链表 │ ├── 01.数据结构算法基本概念.wmv │ ├── 02.时间复杂度和空间复杂度.wmv │ ├── 03.数组与链表源码分析.wmv │ └── 笔记和源码 │ ├── 33. 数据结构算法 - 数组与链表.mht │ └── NDK_Day33_VS.rar ├── 34.数据结构算法 - 单链表与双向链表 │ ├── 01.单链表.wmv │ ├── 02.时间复杂度优化.wmv │ ├── 03.双向链表.wmv │ └── 笔记和源码 │ ├── 34. 数据结构算法 - 单链表与双向链表.mht │ └── NDK_Day34_AS.rar ├── 35.数据结构算法 - 冒泡、选择和插入排序 │ ├── 01.上次作业讲解.wmv │ ├── 02.冒泡排序.wmv │ ├── 03.方法宏定义.wmv │ ├── 04.时间复杂度求解.wmv │ ├── 05.选择排序.wmv │ ├── 06.性能测试比较分析.wmv │ └── 笔记和源码 │ ├── 35. 数据结构算法 - 冒泡、选择和插入排序.mht │ ├── NDK_Day35_AS.rar │ └── 希尔排序.png ├── 36.数据结构算法 - 冒泡优化、插入和希尔排序 │ ├── 01.ndk错误日志调试.wmv │ ├── 02.冒泡排序优化.wmv │ ├── 03.插入排序.wmv │ ├── 04.希尔排序.wmv │ └── 源码和笔记 │ ├── 36. 数据结构算法 - 冒泡优化、插入和希尔排序.mht │ └── NDK_Day36_AS.rar ├── 37.数据结构算法 - 归并排序和快速排序 │ ├── 01.上次遗留问题解决.wmv │ ├── 02.稳定排序.wmv │ ├── 03.归并排序.wmv │ ├── 04.归并优化和时间复杂度求解.wmv │ ├── 05.快速排序.wmv │ ├── 06.快速排序优化.wmv │ └── 笔记和源码 │ ├── NDK_Day36_AS.rar │ ├── merge数组.png │ └── 归并排序.png ├── 38.数据结构算法 - 递归和栈结构 │ ├── 01.循环和递归.wmv │ ├── 02.汉诺塔问题.wmv │ ├── 03.数组实现栈.wmv │ ├── 04.链表实现栈.wmv │ └── 源码和笔记 │ ├── 38. 数据结构算法 - 递归和栈结构.mht │ └── NDK_Day38_AS.rar ├── 39.数据结构算法 - 队列和双向队列 │ ├── 01.汉诺塔问题求解.wmv │ ├── 02.位运算.wmv │ ├── 03.数组实现队列.wmv │ └── 笔记和源码 │ ├── 39. 数据结构算法 - 队列和双向队列.mht │ └── NDK_Day39_AS.rar ├── 40.数据结构算法 - HashMap 源码分析和手写实现 │ ├── 01.HashMap源码实现分析.wmv │ ├── 02.hashCode底层实现分析.wmv │ ├── 03.==、equals和hashCode.wmv │ ├── 04.手写HashMap扩容.wmv │ └── 源码和笔记 │ ├── 40. HashMap 源码分析和手写实现.mht │ └── NDK_Day40.rar ├── 41.数据结构算法 - 树和二叉树 │ ├── 01.树的定义和分类.wmv │ ├── 02.树的存储.wmv │ ├── 03.树、森林与二叉树之间互转.wmv │ └── 笔记和源码 │ ├── 41. 树和二叉树.mht │ ├── NDK_Day41.rar │ ├── 二叉树转树.png │ ├── 树转二叉树.png │ └── 森林转二叉树.png ├── 42.数据结构算法 - 二叉树常见操作 │ ├── 01.二叉树的分类.wmv │ ├── 02.二叉树的遍历.wmv │ ├── 03.平衡二叉树.wmv │ └── 笔记和源码 │ ├── 42. 数据结构算法 - 二叉树常用操作.mht │ ├── NDK_Day42.rar │ └── 二叉树遍历.png ├── 43.数据结构算法 - 优先级队列和堆排序 │ ├── 01.二叉树序列化和反序列.wmv │ ├── 02.优先级队列和堆排序.wmv │ └── 笔记和源码 │ ├── 43. 数据结构算法 - 优先级队列和堆排序.mht │ ├── NDK_Day34_AS.rar │ └── 二叉树的序列化和反序列化.png ├── 44.数据结构算法 - 二叉搜索树 │ ├── 01.二叉搜索树-新增.wmv │ ├── 02.二叉搜索树-查找.wmv │ ├── 03.二叉搜索树 - 删除.wmv │ └── 笔记和源码 │ ├── 44. 数据结构算法 - 二叉搜索树.mht │ └── NDK_Day44.rar ├── 45.数据结构算法 - AVL 树 │ ├── 01.为什么要引入 AVL 树.wmv │ ├── 02.AVL树 - 旋转调整.wmv │ ├── 03.AVL树 - 插入调整.wmv │ └── 笔记和源码 │ ├── NDK_Day45.rar │ ├── 先右旋在左旋.png │ ├── 先左旋再右旋.png │ ├── 右旋.png │ └── 左旋.png ├── 46.数据结构算法 - AVL 树的新增和移除 │ ├── 01.新增操作.wmv │ ├── 02.删除操作.wmv │ └── 源码和笔记 │ ├── 46. 数据结构算法 - AVL 树的新增和移除.mht │ └── NDK_Day46.rar ├── 47.数据结构算法 - 红黑树上篇 │ ├── 01.红黑树和性质.wmv │ ├── 02.红黑树新增逻辑讲解.wmv │ ├── 03.红黑树新增代码实现.wmv │ └── 笔记和源码 │ ├── NDK_Day47.rar │ └── aaa.png ├── 48.数据结构算法 - 红黑树下篇 │ ├── 01.红黑树和 AVL 树的算法复杂度分析.wmv │ ├── 02.红黑树新增理解.wmv │ ├── 03.红黑树的删除操作.wmv │ └── 笔记和源码 │ ├── 48. 数据结构算法 - 红黑树下篇.mht │ └── NDK_Day48.rar ├── 49.数据结构算法 - 哈夫曼编码 │ ├── 01.定长编码和变成编码.wmv │ ├── 02.霍夫曼树的构建过程.wmv │ ├── 03.代码实现霍夫曼编码和解码.wmv │ └── 源码和笔记 │ ├── 49. 数据结构算法 - 哈夫曼编码.mht │ ├── NDK_Day48(修正版).rar │ └── NDK_Day49.rar ├── 50.数据结构算法 - 图 │ ├── 01.Java 多线程的内存模型.wmv │ ├── 02.synchronized 的底层实现原理.wmv │ ├── 03.图的基础定义.wmv │ └── 源码和笔记 │ ├── 01.霍夫曼编码.png │ ├── 02.多线操作HashMap.png │ ├── 03.synchronized底层实现原理.png │ ├── 04.无向边存储方式.png │ ├── 05.有向边存储方式.png │ └── 50. 数据结构算法 - 图.mht ├── 51.数据结构算法 - 图的最小生成树和最短路径 │ ├── 01.邻接表和十字链表.wmv │ ├── 02.图的广度和深度优先遍历.wmv │ ├── 03.最小生成树.wmv │ └── 笔记和源码 │ ├── 51. 数据结构算法 - 图的最小生成树和最短路径.mht │ ├── NDK_Day51.rar │ ├── 十字链表.png │ ├── 广度优先遍历.png │ └── 邻接表.png ├── 52.LeetCode 刷题 - 数字篇 │ ├── 01.迪杰斯特拉算法.wmv │ ├── 02.toSum.wmv │ ├── 03.string to integer.wmv │ └── 笔记和源码 │ ├── 52. LeetCode 刷题 - 数字篇.mht │ └── NDK_Day52.rar ├── 53.LeetCode 刷题 - 位运算 │ ├── 01.Reverse Integer.wmv │ ├── 02.位运算.wmv │ ├── 03.Power of Two.wmv │ ├── 04.Power of Three.wmv │ ├── 05.Number of 1 Bits.wmv │ ├── 06.Factorial Trailing Zeroes.wmv │ └── 笔记和源码 │ ├── 53. LeetCode 刷题 - 位运算.mht │ └── 位运算.png ├── 54.LeetCode 刷题 - 树 │ ├── 01.Binary Tree Inorder Traversal.wmv │ ├── 02.Path Sum.wmv │ ├── 03.Maximum Depth of Binary Tree.wmv │ └── 笔记和源码 │ └── 54. LeetCode 刷题 - 树.mht ├── 55.LeetCode 刷题 - 常用算法思想 │ ├── 01.贪心算法思想 .wmv │ ├── 02.回溯算法思想.wmv │ ├── 03.动态规划算法思想.wmv │ └── 笔记和源码 │ └── 55. LeetCode 刷题 - 常用算法思想.mht ├── 56.OpenCV - 安装和简介 │ ├── 01.OpenCV 安装.wmv │ ├── 02.操作指针转灰度图.wmv │ └── 笔记和源码 │ ├── 56. OpenCV - 安装和简介.mht │ ├── NDK_Day56.rar │ └── opencv需要的dll文件 │ ├── concrt140d.dll │ ├── msvcp140d.dll │ ├── opencv_ffmpeg310_64.dll │ ├── opencv_world340d.dll │ ├── opencv_world340.dll │ └── ucrtbased.dll ├── 57.OpenCV - Android 滤镜效果处理 │ ├── 01.ColorMatrix 矩阵运算.wmv │ ├── 02.Java Bitmap 获取像素操作.wmv │ ├── 03.Native 层操作像素指针.wmv │ ├── 04.ARGB_8888 和 RGB_565.wmv │ └── 笔记和源码 │ ├── 57. OpenCV - Android 滤镜效果处理.mht │ └── NDK_Day57.rar ├── 58.OpenCV - Mat 对象与图像混合 │ ├── 01.细讲 Mat 对象.wmv │ ├── 02.像素获取和修改.wmv │ ├── 03.图像混合.wmv │ ├── 04.饱和度、亮度和对比度.wmv │ └── 笔记和源码 │ ├── 58. OpenCV - Mat 对象与图像混合.mht │ └── NDK_Day58_VS.rar ├── 59.OpenCV - 图像的绘制与卷积操作 │ ├── 01.inline 内联函数.wmv │ ├── 02.绘制形状和文字.wmv │ ├── 03.图像的卷积操作.wmv │ └── 笔记和源码 │ ├── 59. OpenCV - 图像的绘制与模糊.mht │ ├── NDK_Day59_VS.rar │ └── 卷积操作.png ├── 60.Android 性能优化实战 - 界面卡顿 │ ├── 01.APP项目介绍.wmv │ ├── 02.Android Device Monitor 介绍.wmv │ ├── 03.高斯模糊和均值模糊.wmv │ ├── 04.Glide源码分析.wmv │ ├── 05.LruCache的正确使用姿势.wmv │ └── 笔记和源码 │ ├── 60. Android 性能优化实战 - 界面卡顿.mht │ ├── NDK_Day60_VS.rar │ └── 高斯模糊和均值模糊.png ├── 61.Android 性能优化实战 - Bitmap 全面解析 │ ├── 01.Bitmap 到底占多大的内存.wmv │ ├── 02.Bitmap 的内存开辟.wmv │ ├── 03.Bitmap 的内存销毁和复用.wmv │ └── 笔记和源码 │ ├── 61. Android 性能优化实战 - Bitmap 全面解析.mht │ ├── Native层解析 Bitmap 的流程.png │ └── dp、dip、dpi、px .png ├── 62.OpenCV - 实现图片的美容效果 │ ├── 01.Bitmap 的内存优化与适配.wmv │ ├── 02.线上 OOM 内存 dump 搜集.wmv │ ├── 03.实现图片的美容效果.wmv │ ├── 04.腐蚀与膨胀.wmv │ └── 笔记和源码 │ ├── 62. OpenCV - 实现图片的美容效果.mht │ └── NDK_Day62.rar ├── 63.OpenCV - 验证码自动识别 │ ├── 01.形态学操作.wmv │ ├── 02.过滤验证码的干扰.wmv │ ├── 03.上采样与降采样.wmv │ └── 笔记和源码 │ ├── 63. OpenCV - 验证码自动识别.mht │ └── NDK_Day63_VS.rar ├── 64.OpenCV - 自定义线性滤波 │ ├── 01.处理边缘类型.wmv │ ├── 02.自定义线性滤波.wmv │ ├── 03.图像二值化.wmv │ └── 笔记和源码 │ ├── 64. OpenCV - 自定义线性滤波.mht │ ├── NDK_Day64_VS.rar │ ├── 卷积操作.png │ └── 自定义算子.png ├── 65.OpenCV - 图像边缘检测 │ ├── 01.Sobel 算子.wmv │ ├── 02.Laplance 算子.wmv │ ├── 03.Canny 边缘检测.wmv │ └── 笔记和源码 │ ├── 65. OpenCV - 图像边缘检测.mht │ ├── NDK_Day65_VS.rar │ ├── sobel 合并.png │ └── 微积分求导.png ├── 66.OpenCV - 霍夫检测与重映射 │ ├── 01.霍夫直线检测.wmv │ ├── 02.霍夫圆检测.wmv │ ├── 03.重映射.wmv │ └── 笔记和源码 │ ├── 66. OpenCV - 霍夫检测与重映射.mht │ ├── NDK_Day66_VS.rar │ ├── 霍夫圆检测.png │ └── 霍夫直线检测.png ├── 67.OpenCV - 色彩空间与直方图 │ ├── 01. RGB 与 HSV.wmv │ ├── 02.直方图均衡化.wmv │ ├── 03.直方图计算绘制.wmv │ └── 笔记和源码 │ ├── 1_01.jpg │ ├── 1_02.jpg │ ├── 1_03.jpg │ ├── 2_01.jpg │ ├── 2_02.png │ ├── 2_03.jpg │ ├── 2_04.png │ ├── 2_05.jpg │ └── NDK_Day67_VS.rar ├── 68.OpenCV - 直方图比较和匹配 │ ├── 01. 直方图比较.wmv │ ├── 02.直方图的反向投射和模板匹配.wmv │ └── 笔记和源码 │ ├── 68. OpenCV - 直方图比较和匹配.mht │ └── NDK_Day68_VS.rar ├── 69.OpenCV - 轮廓查找与图像分水岭 │ ├── 01.银行卡轮廓查找与绘制.wmv │ ├── 02.图形矩和图像分水岭切割.wmv │ └── 源码和笔记 │ ├── 69. OpenCV - 轮廓查找与图像分水岭.mht │ └── NDK_Day69_VS.rar ├── 70.OpenCV - 手写 QQ 说说图片效果 │ ├── 01.Bitmap 的解封装与编解码 .wmv │ ├── 02. 镜像和逆世界效果.wmv │ ├── 03.浮雕和马赛克效果.wmv │ ├── 04.毛玻璃效果.wmv │ ├── 05.油画效果和速度油画.wmv │ └── 源码和笔记 │ ├── 70. OpenCV - 手写 QQ 说说图片效果.mht │ ├── NDK_Day70_AS.rar │ ├── 图形图像处理.png │ ├── 图片 Bitmap 的解压缩和编解码.png │ └── 逆世界.png ├── 71.OpenCV - 图片的几何变换 │ ├── 01.图片旋转.wmv │ ├── 02.矩阵仿射变换.wmv │ ├── 03.reSize() 图片缩放.wmv │ ├── 04.remap 重映射 .wmv │ └── 笔记和源码 │ ├── 71. OpenCV - 图片的几何变换.mht │ └── NDK_Day71_AS.rar ├── 72.OpenCv - 封装 java 层 sdk 模型 │ ├── 01.苏宁体育面试题讲解.wmv │ ├── 02.NDK 学到什么程度,该怎么学?.wmv │ ├── 03.如何封装 java 层 sdk 模型.wmv │ ├── 04.动手封装 Opencv 的 Mat.java 对象.wmv │ ├── 05.Java 和 C++ 的回收机制.wmv │ └── 源码和笔记 │ ├── 72. NDK 开发实战 - 封装 java 层 sdk 模型.mht │ └── NDK_Day72_AS.rar ├── 73.OpenCV - 手写直方图和直方均衡 │ ├── 01.知识回顾.wmv │ ├── 02.手写实现直方图计算.wmv │ ├── 03.手写实现归一化.wmv │ ├── 04.手写实现直方均衡.wmv │ └── 笔记和源码 │ ├── 73. OpenCV - 手写直方图和直方均衡.mht │ └── NDK_Day73_VS.rar ├── 74.NDK开发实战 - 实现人脸的美容效果(上) │ ├── 01.卷积模糊算法复杂度分析.wmv │ ├── 02.积分图算法介绍.wmv │ ├── 03.卷积模糊算法优化.wmv │ ├── 04.快速边缘保留算法.wmv │ └── 笔记和源码 │ ├── 01.积分图计算.png │ ├── 02.快速边缘保留算法.png │ ├── 03.局部方差公式推导.png │ └── NDK_Day74_VS.rar ├── 75.NDK开发实战 - 实现人脸的美容效果(下) │ ├── 01.皮肤区域检测.wmv │ ├── 02.皮肤区域融合.wmv │ ├── 03.边缘加强与模糊叠加.wmv │ └── 笔记和源码 │ ├── 75. OpenCV - 实现人脸的美容效果(下).mht │ └── NDK_Day75_VS.rar ├── 76.NDK开发实战 - 微信公众号二维码检测与识别 │ ├── 01.实现思路剖析.wmv │ ├── 02.算法流程分析.wmv │ ├── 03.手写实现.wmv │ ├── 04.如何优化.wmv │ └── 笔记和源码 │ ├── 76. NDK开发实战 - 微信公众号二维码检测与识别.mht │ └── NDK_Day76_VS.rar ├── 77.人脸识别 - HOG 和 LBP 特征检测 │ ├── 01. HOG 特征检测的实现原理.wmv │ ├── 02. 行人检测.wmv │ ├── 03.手写 LBP 特征算法.wmv │ ├── 04.haar 特征介绍.wmv │ └── 笔记和源码 │ ├── 77. 人脸识别 - HOG 和 LBP 特征检测.mht │ ├── Haar特征.png │ ├── NDK_Day77_AS.rar │ ├── hog特征.png │ ├── lbp.特征.png │ ├── lbp表达.png │ ├── peoples.png │ ├── 分网格的梯度方向直方图.png │ └── 块描述子.png ├── 78.人脸识别 - 实时人脸检测 │ ├── 01.相机实时检测人脸.wmv │ ├── 02.均值,方差与协方差.wmv │ ├── 03.特征值与特征向量.wmv │ ├── 04.PCA的降维原理与应用.wmv │ └── 笔记和源码 │ ├── 78. 人脸识别 - 级联分类器.mht │ ├── NDK_Day78_AS.rar │ └── NDK_Day78_VS.rar ├── 79.NDK开发实战 - 实时人脸检测和识别 │ ├── 01.样本训练.wmv │ ├── 02.实时识别人脸.wmv │ ├── 03.后续的安排.wmv │ └── 笔记和源码 │ ├── 79. NDK开发实战 - 实时人脸检测和识别.mht │ ├── NDK_Day78_AS.rar │ ├── OpenCV-android-sdk.rar │ ├── orl_faces.rar │ ├── 实时人脸检测.gif │ └── 实时人脸识别.gif ├── 80.音视频技术学习 - 启动篇 │ ├── 01.音视频基础知识.wmv │ ├── 02.视频播放的流程.wmv │ ├── 03.音视频编解码.wmv │ ├── 04.FFmpeg介绍.wmv │ └── 笔记和资料 │ ├── 80. 音视频技术学习 - 启动篇.mht │ ├── 视音频分析工具.rar │ └── 视音频播放流程.png ├── 81.linux 系统编程 - 命令基础,软件卸载与安装 │ ├── 01.linux常用快键键.wmv │ ├── 02.文件和文件夹操作.wmv │ ├── 03.用户与用户组.wmv │ ├── 04.搜索与查找.wmv │ ├── 05.软件安装流程.wmv │ ├── 06.压缩与解压缩.wmv │ └── 笔记与资料 │ ├── 81. linux 系统编程 - 命令基础,软件卸载与安装.mht │ ├── Xftp5.exe │ └── Xshell5.exe ├── 82.linux 系统编程 - 应用编译运行的工作过程 │ ├── 01.vim的三种工作模式.wmv │ ├── 02.vim常用命令.wmv │ ├── 03.gcc编译四个步骤.wmv │ ├── 04.动态库与静态库.wmv │ ├── 05.虚拟内存.wmv │ └── 笔记与源码 │ ├── 82. linux 系统编程 - 应用编译运行的工作过程.mht │ ├── vim三种工作模式.png │ ├── 动态库.png │ └── 虚拟内存布局图.png ├── 83.linux 内核编程 - 文件IO与文件描述符 │ ├── 01.系统调用.wmv │ ├── 02.文件描述符表.wmv │ ├── 03.stat与 lstat.wmv │ ├── 04.目录操作.wmv │ └── 笔记与源码 │ ├── 83. linux 内核编程 - 文件IO与文件描述符.mht │ ├── dir_operate.cpp │ ├── 文件描述符.png │ ├── 系统函数与普通函数.png │ └── 系统调用.png ├── 84.linux 内核编程 - 进程创建与进程管理 │ ├── 01. pcb 进程控制块.wmv │ ├── 02.内存映射.wmv │ ├── 03. fork 创建子进程.wmv │ ├── 04.父子进程共享.wmv │ ├── 05.回收进程.wmv │ ├── 06.监听 APP 应用被卸载.wmv │ └── 笔记和源码 │ ├── 84. linux 内核编程 - 进程创建与进程管理.mht │ ├── fork函数.png │ └── 内存映射.png ├── 85.linux 内核编程 - IPC 进程间通信 │ ├── 01.进程间通信的本质.wmv │ ├── 02.管道.wmv │ ├── 03.信号通信的原理.wmv │ ├── 04.共享映射区通信.wmv │ ├── 05.mmap的实现原理.wmv │ └── 笔记和源码 │ ├── 85. linux 内核编程 - IPC 进程间通信.mht │ ├── mmap_ipc_1.cpp │ ├── mmap_ipc_2.cpp │ ├── mmap的实现原理.png │ ├── 管道.png │ ├── 管道的通信机制.png │ └── 进程间通信.png ├── 86.linux 内核编程 - 线程与多线程同步 │ ├── 01.线程的创建与销毁.wmv │ ├── 02.回收线程.wmv │ ├── 03.分离线程.wmv │ ├── 04.生产者与消费者.wmv │ └── 笔记和源码 │ ├── 86. linux 内核编程 - 线程与多线程同步.mht │ ├── binder驱动.png │ ├── thread1.cpp │ └── thread_comm.cpp ├── 87.CMake 语法 - 自动编译和链接 │ ├── 01.Makefile、CMake 与 Shell 之间的联系.wmv │ ├── 02.Makefile 的一个规则.wmv │ ├── 03.Makefile 的两个函数.wmv │ ├── 04.Makefile 的三个自动变量.wmv │ ├── 05.Cmake 的安装与简介.wmv │ └── 笔记与源码 │ ├── 87. CMake 语法 - 自动编译和链接.mht │ ├── GNU_makefile中文手册.pdf │ ├── Xftp5.exe │ ├── cmake 实战.pdf │ ├── cmake-3.14.3.tar.gz │ ├── m1 │ │ ├── Makefile │ │ ├── add.cpp │ │ ├── div.cpp │ │ ├── hello.cpp │ │ └── mul.cpp │ ├── m2 │ │ ├── Makefile │ │ └── sub.cpp │ └── m3 │ ├── Makefile │ └── hello.cpp ├── 88.CMake 语法 - 详解 CMakeLists.txt │ ├── 01.CMake 安装问题补充 .wmv │ ├── 02.构建生成 .so 动态库.wmv │ ├── 03.链接外部动态库与头文件.wmv │ ├── 04.编写基于 FFmpeg 开发的 CmakeLists.wmv │ └── 笔记与源码 │ └── 88. CMake 语法 - 详解 CMakeLists.mht ├── 89.Shell 脚本 - 详解基础语法 │ ├── 01.自定义变量与环境变量.wmv │ ├── 02.位置参数变量与预定义变量.wmv │ ├── 03.条件判断.wmv │ ├── 04.流程控制语句.wmv │ └── 笔记与源码 │ ├── 01.sh │ ├── 02.sh │ ├── 03.sh │ ├── 04.sh │ ├── 05.sh │ ├── 06.sh │ ├── 07.sh │ ├── 89. Shell 脚本 - 详解基础语法.mht │ └── Linux命令行与shell脚本编程大全.第3版.pdf ├── 90.Shell 脚本 - 自己动手编译 FFmpeg │ ├── 01.CMake 交叉编译 Android 动态库.wmv │ ├── 02.配置 NDK 环境.wmv │ ├── 03.手写 FFmpeg 编译脚本.wmv │ ├── 04.编译参数传递详解.wmv │ ├── 05.运行调试视音频解码.wmv │ └── 笔记与源码 │ ├── configure_help.txt │ ├── ffmpeg-3.3.9.tar.gz │ └── ffmpeg_build.sh ├── 91.FFmpeg - 打造一款万能的音乐播放器 │ ├── 01.效果演示.wmv │ ├── 02.获取 Meta 信息.wmv │ ├── 03.解码音频数据.wmv │ ├── 04.AudioTack 播放音频的原理.wmv │ ├── 05.播放pcm数据.wmv │ ├── 06.内存上涨问题分析.wmv │ └── 笔记和源码 │ ├── 91. FFmpeg - 打造一款万能的音乐播放器.mht │ ├── MusicPlayer.rar │ └── NDK_Day03.rar ├── 92.FFmpeg - 多线程解码播放 │ ├── 01.内存上涨问题分析解决.wmv │ ├── 02.音频重采样.wmv │ ├── 03.添加错误回调到 Java.wmv │ ├── 04.多线程解码播放.wmv │ └── 笔记和源码 │ ├── 92. FFmpeg - 多线程解码播放.mht │ └── MusicPlayer.rar ├── 93. FFmpeg - OpenSLES 播放音频数据 │ ├── 01.JNIEnv 子线程回调 Java 问题.wmv │ ├── 02.OpenSLES 播放音频原理分析.wmv │ ├── 03.OpenSLES 播放音频数据.wmv │ ├── 04.抽取准备方法.wmv │ ├── 05.整理代码架构.wmv │ └── 笔记与源码 │ ├── 93. FFmpeg - OpenSLES 播放音频数据.mht │ ├── MusicPlayer.rar │ └── OpenSLES_Study.rar ├── 94. FFmpeg - 线程队列边解码边播放 │ ├── 01.编译错误解决.wmv │ ├── 02.添加准备完毕回调.wmv │ ├── 03.用队列边解码边播放.wmv │ ├── 04.再次整理代码架构.wmv │ ├── 05.所有功能代码走读.wmv │ └── 笔记与源码 │ ├── 94. FFmpeg - 线程队列边解码边播放.mht │ └── MusicPlayer.rar ├── 95.FFmpeg - Android 视频播放器 │ ├── 01. 整合音乐播放器项目.wmv │ ├── 02.OpenGLES 渲染视频.wmv │ ├── 03.界面的渲染流程.wmv │ ├── 04.SurfaceView 渲染视频.wmv │ ├── 05.下节课的安排.wmv │ └── 笔记与源码 │ ├── 95. FFmpeg - Android 视频播放器.mht │ ├── NDK_Day03.rar │ ├── VideoPlayer.rar │ └── 页面渲染流程.png ├── 96.FFmpeg - 音视频同步 │ ├── 01.调整音乐播放器项目架构.wmv │ ├── 02.模板模式整合视频解码.wmv │ ├── 03.视音频同步的思想.wmv │ ├── 04.实现视音频同步.wmv │ └── 笔记与源码 │ ├── 96. FFmpeg - 音视频同步.mht │ ├── VideoPlayer.rar │ └── 视音频同步.png ├── 97.FFmpeg - Android 直播推拉流 │ ├── 01.自己动手搭建流媒体服务器.wmv │ ├── 02.配置流媒体环境.wmv │ ├── 03.集成 RTMP 推流源码.wmv │ ├── 04.初始化 RTMP 推流.wmv │ ├── 05.回调 Java 层监听初始化状态.wmv │ └── 笔记和源码 │ ├── 97. FFmpeg - Android 直播推拉流.mht │ ├── LivePush.rar │ ├── OpenGLES.rar │ ├── ffmpeg-20190706-feade2b-win64-static.rar │ └── rtmpdump.rar
    • 786
  • android
    11-14 04:23
    最新安卓开发视频教程72讲全集 VIP收费课程 ├── (特别篇)Linux环境搭建.mp4 ├── 01_01_Android平台一日游.mp4 ├── 01_02_搭建Android开发环境.mp4 ├── 01_03_say_hello_to_Android.mp4 ├── 01_04_Activity初步.mp4 ├── 01_05_Activity和Intent.mp4 ├── 01_06_Android当中的常见控件.mp4 ├── 01_07_Activity生命周期(一).mp4 ├── 01_08_Activity的生命周期(二).mp4 ├── 01_09_Activity布局初步(一).mp4 ├── 01_10_Activity布局初步(二).mp4 ├── 01_11_Activity的布局初步(三).mp4 ├── 01_12_Android常见控件(二).mp4 ├── 01_13_常用控件(三).mp4 ├── 01_14_Handler的使用(一).mp4 ├── 01_15_Handler的使用(二).mp4 ├── 01_16_SQLite使用方法.mp4 ├── 01_17_调试程序.mp4 ├── 01_18_文件下载.mp4 ├── 01_19_ContentProvider初步.mp4 ├── 01_20_XML文件解析.mp4 ├── 01_21_广播机制(一).mp4 ├── 01_22_广播机制(二).mp4 ├── 01_23_WIFI网络操作.mp4 ├── 01_24_Socket编程.mp4 ├── 01_25_Service初步(一).mp4 ├── 01_27_项目功能分析.mp4 ├── 01_28_项目详细设计.mp4 ├── 01_29_代码编写(一)下.mp4 ├── 01_29_代码编写(一)(上).mp4 ├── 01_30_代码编写(二).mp4 ├── 01_31_代码编写(三).mp4 ├── 01_32_代码编写(四).mp4 ├── 01_33_代码编写(五).mp4 ├── 01_34_代码编写(六).mp4 ├── 02_01_spinner的使用.mp4 ├── 02_02_常见控件(五).mp4 ├── 02_03_常见控件(六).mp4 ├── 02_04_常见控件(七).mp4 ├── 02_05_appwidget的使用(一).mp4 ├── 02_06_appwidget(二).mp4 ├── 02_07_AppWidget的使用(三).mp4 ├── 02_08_Animation的使用(一).mp4 ├── 02_09_Animations的使用(二).mp4 ├── 02_10_Animations的使用(三).mp4 ├── 02_11_Animations的使用(四).mp4 ├── 02_12_JSON数据解析.mp4 ├── 02_OAuth认证原理.mp4 ├── 03_01_蓝牙操作(一).mp4 ├── 03_02_蓝牙操作(二).mp4 ├── 03_03_用户定位(一).mp4 ├── 03_04_用户定位(二).mp4 ├── 03_05_用户定位(三).mp4 ├── 03_06_GoogleMap(一).mp4 ├── 03_07_Google.Map(二).mp4 ├── 03_08_GoogleMap(三).mp4 ├── 03_OAuth认证(一).mp4 ├── 04_10_OAuth认证流程(三).mp4 ├── 04_11_发送一条微博信息.mp4 ├── 04_12_获取主页时间线.mp4 ├── 04_13_自定义ListView.mp4 ├── 04_14_图片的异步加载(一).mp4 ├── 04_OAuth认证(二).mp4 ├── 05_01_传感器初步.mp4 ├── 05_02_获取传感器数据.mp4 ├── 05_03_获取传感器的属性.mp4 ├── 05_04_加速度传感器的使用.mp4 ├── 05_异步操作(一).mp4 ├── 06_异步任务(二).mp4 ├── 07_HTTP操作(一).mp4 ├── 08_HTTP操作(二).mp4 └── 09_HTTP操作(三).mp4
    • 816
  • android
    11-14 04:10
    白马程序员6天精通Android开发视频教程 ├── AndroidPDF │ ├── Android大纲.pdf │ ├── Android应用开发实战.pdf │ ├── Android应用案例开发大全 PDF 扫描版.rar │ ├── Android开发实战经典.pdf │ ├── Android开发权威指南.李宁.扫描版.pdf │ ├── Android移动开发一本就够.pdf │ ├── Google Android SDK开发范例大全(第3版).pdf │ ├── [Android应用案例开发大全].吴亚峰等.扫描版.pdf │ ├── [Android开发从入门到精通].扶松柏.扫描版.pdf │ ├── android应用开发揭秘.pdf │ ├── dyhdm-Android(jb51.net).rar │ ├── 安卓巴士-史上最全Android中文帮助文档.pdf │ ├── 疯狂Android讲义 第3版(1).pdf │ └── 第一行代码 Android(jb51.net).pdf ├── 第1天 │ ├── 01_今日介绍&集成开发环境介绍.avi │ ├── 02_junit单元测试.avi │ ├── 03_注解介绍.avi │ ├── 04_xml的介绍.avi │ ├── 05_xml的文档声明.avi │ ├── 06_xml的元素.avi │ ├── 07_xml的属性注释&CDATA.avi │ ├── 08_xml的特殊字符&语法回顾.avi │ ├── 09_xml约束的概念和dtd介绍.avi │ ├── 10_dtd约束介绍.avi │ ├── 11_schema约束介绍.avi │ ├── 12_schema约束&上午内容回顾.avi │ ├── 13_xml解析&dom解析说明.avi │ ├── 14_dom解析.avi │ ├── 15_sax解析原理.avi │ ├── 16_sax解析xml转换为arraylist.avi │ ├── 17_sax解析回顾&pull原理.avi │ ├── 18_pull解析xml转换为集合.avi │ ├── 19_json介绍&解析.avi │ └── 20_内容回顾.avi ├── 第2天 │ ├── 00_前情回顾.avi │ ├── 01_今日简介&1G~4G介绍.avi │ ├── 02_android系统和版本介绍.avi │ ├── 03_android虚拟机介绍.avi │ ├── 04_sdk目录介绍.avi │ ├── 05_sdkManager介绍.avi │ ├── 06_android虚拟机介绍.avi │ ├── 07_ddms透视图介绍.avi │ ├── 08_androidHelloworld.avi │ ├── 09_android项目的目录结构.avi │ ├── 10_android打包的过程.avi │ ├── 11_adb指令练习.avi │ ├── 12_电话拨号器_界面实现.avi │ ├── 13_电话拨号器_基本逻辑实现.avi │ ├── 14_电话拨号器_完成.avi │ ├── 15_点击事件第二种写法_匿名内部类.avi │ ├── 16_点击事件第三种写法_activity实现接口.avi │ ├── 17_点击事件第四种写法_布局文件添加onclick属性.avi │ └── 18_andriod常用布局&内容回顾.avi ├── 第3天 │ ├── 00_前情回顾.avi │ ├── 01_测试的概念.avi │ ├── 02_android下单元测试.avi │ ├── 03_android日志猫的使用.avi │ ├── 04_登陆案例布局实现.avi │ ├── 05_登陆案例基本逻辑实现.avi │ ├── 06_登陆案例保存信息完成.avi │ ├── 07_通过上下文获取常见目录.avi │ ├── 08_保存信息到sd卡上.avi │ ├── 09_保存信息到sd卡上完善.avi │ ├── 10_获取sd卡大小&android单位.avi │ ├── 11_文件权限的介绍.avi │ ├── 12_通过上下文操作私有目录模式说明.avi │ ├── 13_sharedpreferencesAPI介绍&登陆界面实现.avi │ ├── 14_通过sharedPreferences保存用户名密码.avi │ ├── 15_通过Stringbuilder组拼xml文件.avi │ ├── 16_通过XMLSeralizer序列化xml文件.avi │ ├── 17_android下xmlpull解析.avi │ └── 18_内容回顾.avi ├── 第5天 │ ├── 00_前情回顾&今日展望.avi │ ├── 01_SQlite数据库简介.avi │ ├── 02_SQliteOpenHelper介绍&oncreate方法介绍.avi │ ├── 03_通过OpenHelper获取SqliteDatabase对象.avi │ ├── 04_数据库升级onUpgrade&ondowngrade.avi │ ├── 05_直接执行sql操作数据库.avi │ ├── 06_直接执行sql操作数据库delete&update.avi │ ├── 07_通过谷歌封装的api操作数据库delete&insert.avi │ ├── 08_通过谷歌封装的api操作数据库update&query.avi │ ├── 09_sqlite两种api比较.avi │ ├── 10_上午回顾&数据库事务.avi │ ├── 11_listview入门.avi │ ├── 12_listview优化.avi │ ├── 13_listview宽度和高度不要使用包裹内容.avi │ ├── 14_通过listview展示复杂条目.avi │ ├── 15_获取LayoutInflater的三种方法.avi │ ├── 16_ArrayAdapter使用.avi │ ├── 17_simpleadapter使用.avi │ ├── 18_simpleadapter和ArrayAdapter总结.avi │ ├── 19_通过listview展示数据库数据_数据库准备数据完成.avi │ ├── 20_通过listview展示数据库数据_完成.avi │ └── 21_listview展示数据内容回顾.avi └── 第6天 ├── 00_前情回顾.avi ├── 01_html简介.avi ├── 02_排版标记.avi ├── 03_字体标记.avi ├── 04_有序清单无序清单.avi ├── 05_超链接标签.avi ├── 06_图像标签.avi ├── 07_表格标签.avi ├── 08_表单标签.avi ├── 09_web相关概念介绍.avi ├── 10_发布web项目到tomcat.avi ├── 11_使用eclipse发布web项目到tomcat.avi ├── 12_tcp_ip相关概念.avi ├── 13_http介绍&getpost请求.avi ├── 14_http请求介绍.avi ├── 15_http响应相关概念.avi └── 16_内容回顾.avi
    • 738