贾小昆的个人网站

贾小昆的个人网站

Jaqen's Personal Website

Android 音视频学习:使用 MediaCodec API 完成音频 AAC 硬编、硬解
这篇文章主要来学习下使用 MediaCodec API 进行音频的编解码。 什么是编码、解码?音视频领域,我们常说的 编码 就是压缩,解码 就是解压缩。 编码的目的是减小数据的体积,减少存储空间和传输已存储文件所需的带宽。 编码后的数据是不能直接使用的,必须先解码成原来的样子。就像 zip 压缩文件里面有张图片,我们用图片查看器是无法打开的,必须先解压文件,恢复图片原来的数据,这样才能查看。音视频编解码也是同样的道理。 MediaCodec我们了解一下 Android 官方提供的音频编解码的 API,即 MediaCodec 类,该 API 是在 Andorid 4.1 (API 16)...
Android 音视频学习:使用 MediaExtractor 和 MediaMuxer 解析和封装 mp4 文件
这篇文章的目的主要是学习 Android 平台的 MediaExtractor 和 MediaMuxer API,知道如何解析和封装 mp4 文件。 一个音视频文件是包含音频和视频,Android 中可以通过 MediaExtractor API 把音频或视频给单独抽取出来,通过 MediaMuxer 合成新的视频。 MediaExtractorMediaExtractor 的作用就是将音频和视频分离。 主要是以下几个步骤: 1、创建实例 1MediaExtractor mediaExtractor = new MediaExtractor(); 2、设置数据源 1mediaExtra...
每周分享第 8 期
这里记录过去一周,我看到的值得分享的内容。 本周刊开源(GitHub: weekly),欢迎投稿,分享文章、资源、工具等。 文章1、想退休,可能没机会了 别再想着三十五岁或四十五岁退休了。好好工作,好好生活,不辜负这样的时代。 2、您可坐稳了,海苔…其实是紫菜做出来的! 涨知识,有意思的公众号,推荐订阅。 资源1、Learn Git Branching 一个 Git 命令可视化学习项目。能够生动形象的帮助开发人员理解、学习 Git 命令,通过一系列刺激的关卡挑战,逐步深入的学习 Git 的强大功能。 2、fucking-algorithm 解 LeetCode 题目集合。号称“手撕 L...
每周分享第 7 期
这里记录过去一周,我看到的值得分享的内容。 本周刊开源(GitHub: zywudev/weekly),欢迎投稿,或者推荐好玩的东西。 文章1、这一年团队的磨合与成长 作者讲述了自己在字节跳动组建团队过程中的一些故事和感悟。 “如果你喜欢一只蝴蝶,千万不要去追,因为你追不上她。你应该去种花、种草,等到春暖花开的时候,等到草长莺飞的时候,蝴蝶自然会飞回来。如果你喜欢的那只蝴蝶没有飞回来,怎么办呢? 你有了花,有了草,有了阳光,有了雨露,有了独特的魅力,那只蝴蝶没有飞回来,其他的蝴蝶会飞回来,比她更好的会飞回来,这就叫做花开蝶自来,爱情如此,生活如此,事业也如此。” 2、那些消失的安卓技术博...
Android 音视频学习:使用 Camera API 采集视频数据
这篇文章的主要学习内容是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView、TextureView 来预览 Camera 数据,取到 NV21 的数据回调。 Android 中预览相机画面主要用 SurfaceView 和 TextureView。 SurfaceView:SurfaceView 是一个有自己 Surface 的 View。界面渲染可以放在单独线程而不是主线程中。它更像是一个 Window,自身不能做变形和动画。 TextureView:TextureView 同样也有自己的 Surface。但是它只能在拥有硬件加速层的 Window...
Android 音视频学习:使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现 PCM 保存为 WAV 文件
在具体使用 AudioRecord 采集音频之前,简单了解下 PCM。 什么是 PCM?我们知道,声音本身是模拟信号,而计算机只能处理离散的数字信号,要在计算机中处理声音,就需要将声音数字化,这个过程叫模数转换(A/D 变换) 。模数转换直接生成的二进制序列称为 PCM(pulse code modulation, 脉冲编码调制)数据。它是数字音频在计算机、光盘、数字电话和其他数字音频应用中的标准形式。 要将模拟信号转为 PCM 时,需要将声音量化,我们一般从如下几个维度描述一段声音: 采样频率:每秒钟采集声音样本的次数,它用赫兹(Hz)来表示。 采样频率越高,声音的质量也就越好,声音的...
程序员技术资源分享群
独学而无友,则孤陋而寡闻。 我是个爱分享的程序员,遇上好的资源、工具软件都会主动分享给朋友。 好东西怎么能独享呢,分享给别人的同时,可能会收获更多。 所以,创建了一个技术资源分享群,欢迎爱分享的你加入进来。 本群主要是技术资源分享,包括: 技术资源 工具软件 技术心得 技术热点 为了让群价值最大化,交流更有效率: 鼓励有价值的内容分享 鼓励友善、互相帮助、积极努力的氛围 不要只做伸手党 禁止低级趣味下流庸俗的内容 禁止讨论涉政敏感话题 禁止广告和商业推广 进群方式: 为了群的质量,这里不贴群二维码了,想进的朋友加下我的微信,我拉你进群。(备注:技术群) 我的微信...
Android 音视频学习:使用三种不同的方式绘制图片
本系列是个人 Android 音视频学习总结,这是第一篇,主要学习内容是: 在 Android 平台上绘制一张图片,使用三种不同的 API,ImageView、SurfaceView、自定义 View。 ImageView 绘制图片这种方式较为普遍简单。 12345678910111213141516171819202122public class ImageViewActivity extends BaseActivity { private ImageView mImageView; @Override protected View getContentV...
如何让百度收录 GitHub Pages 个人博客
很多程序员朋友都有在 GitHub Pages 上搭建自己的个人博客,对于个人博客,没有被搜索引擎收录的话,别人基本是是看不到的,再好的技术文无法被分享也是白搭。 基于 GitHub Pages 的个人博客, Google 收录非常及时全面。然而,到目前为止,GitHub 还是拒绝百度爬虫的访问,直接返回 403。 官方给出原因是,百度爬虫爬得太狠,影响了 Github Pages 服务的正常使用。这就导致了,但凡在 Github Pages 搭建的个人博客,都无法被百度收录。 现有的解决办法1、使用 coding.net 建立镜像网站 我之前使用过 coding.net,在本地 rep...
Retrofit 源码分析
前面的文章我们分析了 OkHttp 的核心源码,而 Retrofit 与 OkHttp 的结合使用,也是目前主流的方式,这篇文章主要分析下目前 Android 最优秀的网络封装框架 Retrofit。 在分析 Retrofit 源码之前,先看下 Retrofit 的简单使用。 基本使用一般情况,Retrofit 的使用流程按照以下三步: 1、将 HTTP API 定义成接口形式 1234public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>&...
avatar
贾小昆