赤壁赋

壬戌之秋,七月既望,苏子与客泛舟游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。

于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉,余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。

苏子愀然,正襟危坐而问客曰:“何为其然也?”客曰:“月明星稀,乌鹊南飞,此非曹孟德之诗乎?西望夏口,东望武昌,山川相缪,郁乎苍苍,此非孟德之困于周郎者乎?方其破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗,固一世之雄也,而今安在哉?况吾与子渔樵于江渚之上,侣鱼虾而友麋鹿,驾一叶之扁舟,举匏樽以相属。寄蜉蝣于天地,渺沧海之一粟。哀吾生之须臾,羡长江之无穷。挟飞仙以遨游,抱明月而长终。知不可乎骤得,托遗响于悲风。”

苏子曰:“客亦知夫水与月乎?逝者如斯,而未尝往也;盈虚者如彼,而卒莫消长也。盖将自其变者而观之,则天地曾不能以一瞬;自其不变者而观之,则物与我皆无尽也,而又何羡乎!且夫天地之间,物各有主,苟非吾之所有,虽一毫而莫取。惟江上之清风,与山间之明月,耳得之而为声,目遇之而成色,取之无禁,用之不竭,是造物者之无尽藏也,而吾与子之所共适。”

客喜而笑,洗盏更酌。肴核既尽,杯盘狼藉。相与枕藉乎舟中,不知东方之既白。

希望自己努力坚持

最近工作方面需要接触到音视频方面,然而自己这方面却是一个小白,所以决定自己动手学会这方面的内容,看了一下自己需要学习的东西太多太多,网上的资料比较零散,一下子陷入了迷茫.直到在网上看到一篇音视频开发指南Android 音视频开发入门指南,突然感觉自己又有了目标和动力,所以接下来就按照上面的步骤一步步进阶!

进阶步骤

在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View

在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件

在 Android 平台使用 Camera API 进行视频的采集,分别使用 SurfaceView、TextureView 来预览 Camera 数据,取到 NV21 的数据回调

学习 Android 平台的 MediaExtractor 和 MediaMuxer API,知道如何解析和封装 mp4 文件

学习 Android 平台 OpenGL ES API,了解 OpenGL 开发的基本流程,使用 OpenGL 绘制一个三角形

学习 Android 平台 OpenGL ES API,学习纹理绘制,能够使用 OpenGL 显示一张图片

学习 MediaCodec API,完成音频 AAC 硬编、硬解

学习 MediaCodec API,完成视频 H.264 的硬编、硬解

串联整个音视频录制流程,完成音视频的采集、编码、封包成 mp4 输出

串联整个音视频播放流程,完成 mp4 的解析、音视频的解码、播放和渲染

进一步学习 OpenGL,了解如何实现视频的剪裁、旋转、水印、滤镜,并学习 OpenGL 高级特性,如:VBO,VAO,FBO 等等

学习 Android 图形图像架构,能够使用 GLSurfaceviw 绘制 Camera 预览画面

深入研究音视频相关的网络协议,如 rtmp,hls,以及封包格式,如:flv,mp4

深入学习一些音视频领域的开源项目,如 webrtc,ffmpeg,ijkplayer,librtmp 等等

将 ffmpeg 库移植到 Android 平台,结合上面积累的经验,编写一款简易的音视频播放器

将 x264 库移植到 Android 平台,结合上面积累的经验,完成视频数据 H264 软编功能

将 librtmp 库移植到 Android 平台,结合上面积累的经验,完成 Android RTMP 推流功能

上面积累的经验,做一款短视频 APP,完成如:断点拍摄、添加水印、本地转码、视频剪辑、视频拼接、MV 特效等功能

看到没这一条一条的.列的多好,我准备花半年的时间来学习.

实现第一条

在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View

ImageView,自定义就不用说了吧,下面重点看看SurfaceView的绘制图片.

直接上代码:

public class SurfaceViewDraw extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder surfaceHolder;

private Paint paint;

private Rect aa;

private Bitmap bitmap;

public SurfaceViewDraw(Context context) {

this(context, null);

}

public SurfaceViewDraw(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public SurfaceViewDraw(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

//得到控制器

surfaceHolder = getHolder();

//对surfaceview进行操作

surfaceHolder.addCallback(this);

paint = new Paint();

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.olo);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

//重要的一点要说明.在这里可以在线程里面用canvas绘制图片,所以为什么SurfaceView比较时候绘制图片和图形

Canvas canvas = surfaceHolder.lockCanvas();

//开始画

canvas.drawBitmap(bitmap, new Matrix(), paint);

//解锁画布

surfaceHolder.unlockCanvasAndPost(canvas);

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

//surface 大小发生变化的时候

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

//销毁时发生,一般在这里将画图停止.释放

}

}

结果

image.png

第一步很好实现了!继续努力!!,坚持下去!!!

android音视频播放技术背景,Android音视频开发-入门(一)相关推荐

  1. 【安卓】音视频开发入门

    文章目录 音视频开发学习思路 关于开发的思考 音视频开发的内容 采集 渲染 处理 传输 音频基础知识 基础概念 采样率(samplerate) 量化精度(位宽) 声道数(channels) 音频帧(f ...

  2. “抖音”式的酷炫短视频开发进阶

    "抖音"式的酷炫短视频开发进阶 原创 2018-01-19 展晓凯 LiveVideoStack 2017年短视频应用的爆发,再次改变了人们,尤其是年轻人的生活习惯,快手.抖音等应 ...

  3. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  4. 音视频开发入门基础知识(音频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 前言 音频的采集和播放 音频常见的格式 音频的编码 前言 在音视频开发入门基础知 ...

  5. Android 音视频开发入门指南

    最近收到很多网友通过邮件或者留言说想学习音视频开发,该如何入门,我今天专门写篇文章统一回复下吧. 音视频这块,目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的,希望我后面能挤出时间整 ...

  6. Android音视频开发入门指南

    <Android 音视频从入门到提高 -- 任务列表> 1. 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 Vi ...

  7. 音视频开发入门(4):视频编解码之预测技术介绍

    上一节的图中有一个表示显示的图像序列与编码序列是不同的,不知道大家注意到没有,这个图很重要,编码是有固定规则的,视屏播放时,并不是按照各帧达到顺序播放的,而是按照这个规则进行播放. 前言 即时通讯应用 ...

  8. 浅谈音视频开发入门基础及进阶资源分享

    导言:音视频开发涉及的知识面比较广,知识点又相对独立琐碎,入门门槛相对较高.想要对音视频开发具有深入全面的了解,需要在行业深耕多年.本文将简单介绍音视频的采集,编解码,传输,渲染四个技术点并对涉及到的 ...

  9. 基于android的lbs技术,基于android的lbs定位系统的设计-电子与通信工程专业论文.docx...

    基于android的lbs定位系统的设计-电子与通信工程专业论文 I I 摘要 随着 Android 操作系统的智能手机的普及.移动 3G 网络在中国的发展和公众对移动数据 业务的需求迅速增长,运营商 ...

  10. 音视频开发入门(3):视频编解码之编码基础

    前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的.有关实时 ...

最新文章

  1. linux history(命令历史)
  2. Binary Tree Inorder Traversal
  3. java解决跨域问题
  4. redhat和ubuntu上部署本地源
  5. jvm classLoader 过程
  6. 使用Apache CXF进行Web服务学习
  7. 房价预测python_详解 Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索...
  8. Java中的13个原子操作类
  9. 将json转为map的两种方式及前后端开发json Api设计规范总结
  10. IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?
  11. 卫星对地观察模型系统操作说明
  12. es做mysql二级索引_用Elasticsearch实现HBase二级索引
  13. 能测试经纬度的软件,经纬度转换工具(适用多种测试软件)
  14. 【供应链架构day2】美团收单供应链系统的演进之路
  15. 【转】你真的理解Python中MRO算法吗?
  16. 编译原理(龙书第二版)--怎么求FOLLOW集
  17. 【总结整理】产品经理技术
  18. 雷达探测项目仿真代码(Matlab代码实现)
  19. 2022年全球与中国数模转换器市场现状及未来发展趋势
  20. Android开发工具类之FileUtils,ImageUtils

热门文章

  1. ios识别人脸自动拍照_GitHub - qingweiiOS/FaceRecognition: 活体人脸识别,识别人脸,识别张嘴和摇头动作,并拍照...
  2. html播放mkv,如何在Windows Media Player上播放MKV文件 | MOS86
  3. html插入mkv,mkv导入到PR中该怎么做?
  4. 寻梦港家政上门服务小程序微擎
  5. 中国5G SA核心网UDM
  6. 山西台达plc可编程控制器_PLC可编程控制器常见的应用领域
  7. 与我十年长跑的女朋友就要嫁人了
  8. mysql查询前100个_mysql查询前100条数据
  9. git cherry-pick的使用
  10. win10隐藏登入界面时的administrator账户