摘要: 一、FFmpeg 学习 1. 官方API文档 FFmpeg Documentation:http://www.ffmpeg.org/doxygen/trunk/index.html 2. 优秀开源项目 a). FFmpeg_Tutorial : https://github.com/yinwenji阅读全文
posted @ 2019-02-21 17:02 灰色飘零 阅读(182) 评论(0) 编辑
摘要: Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的。只能通过一点点的学习和积累把这块的知识串联积累起来。 初级入门篇: Android 音视频开发(一) : 通过三种方式绘制图片 Android 音视频开发(二):使用 AudioRecord 采集音频P阅读全文
posted @ 2017-08-30 13:02 灰色飘零 阅读(11968) 评论(1) 编辑
摘要: 下面这些资源对Android开发来说是很有帮助的! 1. 在线代码运行工具 地址:https://tool.lu/coderunner/ 说明:此工具站能在线运行C、C++、Java,基本能满足相关基础知识学习时的运行的实验代码的需求。 2. 在线编程书籍/教程集合 Android 官方网站 说明:阅读全文
posted @ 2017-03-17 17:42 灰色飘零 阅读(454) 评论(0) 编辑
摘要: Android MediaPlayer 在API 23即6.0版本开始支持倍速播放,下面我们来介绍一下如何使用MediaPlayer进行倍速播放。 一、核心接口 1. 接口说明 (1) 使用这个接口可以进行播放速率的设置。 (2) 播放器prepared状态之前调用这个方法不会更改播放器的状态。 (阅读全文
posted @ 2019-05-22 15:53 灰色飘零 阅读(7) 评论(0) 编辑
摘要: Gradle 本身提供了一些基本的概念和整体核心的框架,其他用于描述真实使用场景的都可以通过插件扩展的方式来实现。这样就可以通过抽象的方式提供一个核心的框架,其他具体的功能和业务都通过插件扩展的方式来实现。 Gradle 内置了很多常用的插件,基本满足大部分工作,但是也有一些插件是没有内置的,这时候阅读全文
posted @ 2019-05-22 14:53 灰色飘零 阅读(13) 评论(0) 编辑
摘要: 在之前的学习中,我们了解到Gradle的构建工作都是由Task组合完成的。本节我们就来介绍一下 Task - 任务。 一、多种方式创建任务 在Gradle中,我们可以有很多种方式来创建任务。为什么有这么多种方式呢?这都依赖于Project提供的快捷方法以及TaskContainer提供的相关Crea阅读全文
posted @ 2019-05-22 11:43 灰色飘零 阅读(20) 评论(0) 编辑
摘要: 本节我们从整体的角度来介绍一下Gradle。 一、setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置。设置文件的默认的名字就是setting.gradle,此文件位于根工程目录下。 setting.gradle 的作用就是为了配置子工程。在Gradle中,阅读全文
posted @ 2019-05-21 20:06 灰色飘零 阅读(12) 评论(0) 编辑
摘要: 在第一节,我们使用到了gradle -q hello命令行来运行Hello World,并对Hello World进行了简单的分析,了解到 gradle -q hello 的意思是要执行的build.gradle脚本中定义的名为hello的Task,-q参数用于控制gradle输出的日志级别,以及哪阅读全文
posted @ 2019-05-16 17:20 灰色飘零 阅读(21) 评论(0) 编辑
摘要: 一、EventBus 简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。 它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。 1. EventBus阅读全文
posted @ 2019-05-15 11:30 灰色飘零 阅读(16) 评论(0) 编辑
摘要: Wrapper,就是对Gradle的一层包装,便于在团队开发过程中统一Gradle构建的版本。这样大家就可以使用统一的Gradle版本进行构建,避免因为Gradle的版本不统一带来的不必要的问题。 这里我们把Wrapper这块的内容放在第二节的原因为,我们在项目开发中,使用的都是Wrapper这种方阅读全文
posted @ 2019-05-13 17:36 灰色飘零 阅读(14) 评论(0) 编辑
摘要: 做 Android 音视频播放器开发的时候,我们基本都会遇到一类需求:音量 & 亮度 调节。其中做亮度调节功能的时候,发现还是有一定复杂度的。 Android亮度调节分为两个类,分别是: Android 系统亮度调节 Android 当前屏幕(Window)亮度调节(即App亮度调节) 一、Andr阅读全文
posted @ 2019-05-13 13:21 灰色飘零 阅读(20) 评论(0) 编辑
摘要: 一、简介 ExoPlayer是一个Android应用层的媒体播放器,它提供了一套可替换Android MediaPlayer的API,可以播放本地或者是线上的音视频资源。ExoPlayer支持一些Android MediaPlayer不支持的特性,比如适配DASH和SmoothStreaming的播阅读全文
posted @ 2019-05-06 22:42 灰色飘零 阅读(73) 评论(0) 编辑
摘要: 我们在常见的开源协议如BSD,GPL,LGPL,MIT等都是OSI批准的协议。如果要开源自己的代码,最好也是选择这些被批准的开源协议。 这里我们来看四种最常用的开源协议及它们的适用范围,供那些准备开源或者使用开源产品的开发人员/厂家参考。 一、BSD开源协议 BSD开源协议是一个给于使用者很大自由的阅读全文
posted @ 2019-04-28 14:57 灰色飘零 阅读(24) 评论(0) 编辑
摘要: 导出过程中,如果出现JavaDoc中文乱码的问题,可以在Other command line arguments栏目添加命令参数:-encoding UTF-8 -charset UTF-8(如果是GBK,参数为 -encoding GBK -charset GBK) 位置参照下图: 即可解决中文乱阅读全文
posted @ 2019-04-26 13:25 灰色飘零 阅读(15) 评论(0) 编辑
摘要: 问题背景 Android Studio 开发时使用到了 GSYVideoPlayer 开源的播放器框架,配置信息如下: 在这之前,已经配置了support库: 运行时报错如下: 通过报错的内容大概可以猜测出来是播放器使用的V4库和我们配置的V4库出现冲突了,而且是版本冲突。 解决方案 解决方案无非就阅读全文
posted @ 2019-04-25 12:30 灰色飘零 阅读(404) 评论(0) 编辑
摘要: 一、概述 音视频同步(avsync),是影响多媒体应用体验质量的一个重要因素。而我们在看到音视频同步的时候,最先想到的就是对齐两者的pts,但是实际使用中的各类播放器,其音视频同步机制都比这些复杂的多。 这里我们先介绍一些音视频同步相关的知识: 1. 如何测试音视频同步情况 最简单的就是播放一个演唱阅读全文
posted @ 2019-04-22 18:01 灰色飘零 阅读(104) 评论(0) 编辑
摘要: FFmpeg对音频、视频播放速度的调整的原理不一样。下面简单的说一下各自的原理及实现方式: 一、调整视频速率 调整视频速率的原理为:修改视频的pts,dts 实现: 注意:视频调整的速度倍率范围为:[0.25, 4] 如果只调整视频的话最好把音频禁掉。 对视频进行加速时,如果不想丢帧,可以用-r 参阅读全文
posted @ 2019-04-15 10:25 灰色飘零 阅读(82) 评论(0) 编辑
摘要: 在Objective-C 学习 (一):Objective-C 概述 学习了OC的基本知识,本节我们来实战一下: 运行效果:阅读全文
posted @ 2019-04-11 11:02 灰色飘零 阅读(19) 评论(0) 编辑