Android 多媒体编程
文章平均质量分 83
BetterDaZhang
做软件开发,个人感觉要勤于思考和坚持不懈。
展开
-
FFmpeg 新旧API编码
背景直播SDK一开始使用的FFmpeg 2.8版本的,现在的FFmpeg最新版已经是4.4了。播放器编辑器使用的FFmpeg都是4.0的版本;新版本FFmpeg在内部结构也做了优化,效率、稳定性相比较旧版本都提升了不少。所以直播SDK FFmpeg也要必须升级了。简介直播SDK内部主要3部分使用了FFmpeg:使用libavcodec 编码Audio;使用libavcodec 编码Video;使用libavformat 合成/推流;我会先讲解使用旧AP Ilibavcodec编码Audio原创 2022-02-07 18:20:04 · 3626 阅读 · 0 评论 -
Android图形系统介绍及SurfaceView、GLSurfaceView、TextureView、SurfaceTexture、EGLSurface的区别和使用场景
一、背景之前一直好奇一件事当我们把View控件渲染之后Android系统底层是如何把view显示到屏幕上面的。当同时打开多个app时,我们可以看到多个app的内容。Android底层系统到底是如何把多个组件、多个窗口、多个app的界面同时渲染到屏幕上的呢?之前一直在看这方面的知识,发现网上很多都是介绍Android图形系统源码分析的,关于图形系统整个数据流程的理论分析过程很少。最近又搜刮了大量播客,也找到了好多优质的博文,自己也总结下Android图形系统数据流过程的分析。最后也介绍下在应用层多媒体开发中原创 2022-02-07 18:07:29 · 6648 阅读 · 1 评论 -
Android端直播SDK实现方案
概述直播系统的架构总体上分为采集模块、预览模块、处理模块、编码模块、推流模块。把这五个模块串联起来就构成了整个直播系统的数据流。如下图所示:音频采集:采集原始的PCM数据。音频处理:对音频进行混音消除、降噪、自动增益等处理。音频编码:把PCM格式的数据编码为AAC格式。视频采集:相机/屏幕流的采集;YUV格式或者纹理格式。视频处理:对视频进行美颜/滤镜等处理。预 览: 把视频处理后的视频流在屏幕上进行渲染显示。视频编码:把纹理或者YUV格式的原始视频流压缩成H264格式。推 流:把AA原创 2022-02-07 17:44:29 · 5885 阅读 · 0 评论 -
Android 音视频技术汇总
背景Android端音视频开发已经快6个年头了,回顾这6年的学习、开发经历,中间的酸甜苦辣只有自己知道。现在计划把之前学习的音视频知识及未来计划学习的知识点汇总下加深自己对音视频的全局的理解,同时也给刚入门音视频的开发者提供参考,减少他们的学习时间。音视频技术知识图谱音视频技术知识点讲解视频流获取Camera/Camera录屏(MediaProjection)外接摄像头(USB、UVC) 文件、网络音频流获取AudioRecordOpenSLAAudio视频处理Open原创 2021-09-18 11:44:21 · 312 阅读 · 0 评论 -
Android Camera设置颜色格式与Mediacodec编解码颜色格式
前言我们在前面学习的内容都是为了如何通过Camera预览获得录制的视频,然后把音频和视频上传到服务器或把音频与视频合成本地文件保存打好基础;但我们在还需要学习Camera预览的格式以及MediaCodec编解码的颜色格式的联系,否则我们在合成视频、上传到服务器的视频播放时会有颜色异常;比如:颜色不对、彩色变成黑白等等。知识结构1、Camera预览格式Camera预览格式:NV21、YV12 通过以原创 2016-10-15 17:15:43 · 11054 阅读 · 0 评论 -
摄像头Camera视频源数据采集解析
一、前言在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,Android中使用摄像头的场景很多,在没有直播这个行业出现之前,之前用到摄像头的最多就两个场景,一个是二维码扫描,一个是美颜拍照类的应用。那么这里就来看看Android中的摄像头的用法,以及如何进行数据采转载 2016-10-16 17:25:35 · 23493 阅读 · 4 评论 -
Android5.0屏幕截屏与屏幕录制
一、屏幕截屏1、屏幕截屏的步骤:1:通过 getSystemService()得到MediaProjectionManager服务; 2:通过MediaProjectionManager创建一个屏幕捕捉意图; 3:通过startActivityForResult开启该意图; 4:创建ImageReader、MediaProjection对象,然后通过mediaProjection.create原创 2016-10-07 20:21:22 · 7233 阅读 · 1 评论 -
MediaCodec文档翻译
前言之前我们所学习的音视频编解码全都是通过Android已经封装好的MediaRecorder实现的,以后真正在工作中我们很少使用MediaRecorder实现音视频的录制;因为我们接触不了音视频的原始数据,不能对它进行二次处理,比如美颜相机;如今直播的兴起,我们通过直播视频可以看到每一个直播女;我为什么不说直播美女呢!!!原因是我们所看到的视频并不是她们的真是面目;而是经过二次处理后的,我们所看到转载 2016-10-07 23:07:06 · 2337 阅读 · 0 评论 -
音视频开发指南
参考: android音视频点/直播模块开发 [总结]视音频编解码技术零基础学习方法 android 音视频开发过程 键盘舞者113的博客转载: Android 音视频开发入门指南Android开发,本身并不是一个可以走得多远的方向,它只是一个平台,提供了许多封装好的API,让大家能够快速开发出针对特定业务的应用。真正有价值的地方就在于Android与具体的业务方向结合,比如...转载 2018-06-08 14:58:18 · 1216 阅读 · 0 评论 -
AudioRecord、AudioTractor实现音频的录制和播放
前言我们在刚学习多媒体编程的时候,接触音视频的录制时更多的是通过MediaRecorder实现音频的录制;请看我的这篇文章MediaRecorder录制音频及代码的抽取封装 实现音频的播放通过MediaPlayer;可以查看我的这篇博客MediaPlayer播放不同来源的音频文件 SoundPool更多的是播放短而急促的声音,比如:嘟一声!!!比较简单这里就不再累述; 我们可以通过AudioR原创 2016-10-12 22:31:52 · 676 阅读 · 0 评论 -
把一个音视频文件的视频部分抽取出来播放
知识结构MediaCodec: Android中直播视频技术探究之—基础知识大纲介绍、MediaCodec文档翻译 详细介绍了MediaCodec的用法;在这里我们只使用MediaCodec的解码的功能; mMediaCodec.configure(mMediaFormat, mSurface, null, 0);我们把SurfaceView.getSurface()传给它,就能把视频在Surf原创 2016-10-10 22:43:19 · 1263 阅读 · 1 评论 -
MediaPlayer+MediaPlayerController+MediaPlayer.OnBufferingUpdateListener实现音乐播放器
在Android开发中渐渐发现每一个类只负责自己的模块,类之间的耦合性很低。每一个类只负责自己的模块,但不同的类进行组合就可以创建一个功能强大的应用;下面通过一个音乐播放器来体验下这个思想: 我们之前可能学过如何通过MediaPlayer来播放res/raw、assets中的原声文件、网络中的文件等等。在这里不做介绍,感兴趣的自己查资料吧! 但在以前我们更多的使用Button+MediaPlay原创 2016-04-21 20:58:22 · 6255 阅读 · 0 评论 -
获取与手机屏幕适中的图片
1、背景我们使用Camera的应用程序捕捉图像时,如:Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, REQUESTCODE );然后在onActivityResult()中获取捕捉的图像:protected void onActi原创 2016-08-20 17:40:40 · 568 阅读 · 0 评论 -
Android中直播视频技术探究之---基础知识大纲介绍
该博客转载于猿是一种能够改变世界的动物!!一、前言最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更重要的是学习技术,其实Android中的视频技术没什么说的,因为网上的资料很多,但是之前的视频技术大部分都出现在了视频播放,就是主流的视频播放器,那个最重要的一个转载 2016-08-21 08:59:11 · 1811 阅读 · 0 评论 -
TextureView 实现Camera预览
一、前言在前面的博客中Camera 拍照中我们其实已经介绍过如何通过SurfaceView实现Camera的预览;今天闲着没事就写写怎样通过TextureView实现Camera预览,并介绍下TextureView与SurfaceView的区别。二、知识结构1、相似点我们可能经常使用SurfaceView来实现Camera预览; 1:通过SurfaceViewHolder为SurfaceView设原创 2016-09-15 17:56:06 · 6835 阅读 · 0 评论 -
MediaPlayer播放不同来源的音频文件
1、播放应用的资源文件(在/res/raw中的)播放应用的资源文件需要两步: 1:调用MediaPlayer的create(Context context,int resid)方法,加载指 定资源文件; 2:调用MediaPlayer的start()、stop()、pause()等控制播放方法;实例代码:MediaPlayer mediaPlayer = MediaPla原创 2016-08-14 10:28:00 · 2666 阅读 · 0 评论 -
MediaRecorder录制音频及代码的抽取封装
1、背景android提供了MediaRecorder类,通过MediaRecorder录制音频的过程很简单,按步骤进行即可;在很多开发项目中,我们见到代码的封装很好;常常感觉这才是大牛写出的代码,其实我们也是可以写出来的,今天就通过一个MediaRecorder录制音频的实例,进行代码的抽取实现封装;2、MediaRecorder录制音频的步骤(来自疯狂Androud讲义)1:创建MediaRec原创 2016-08-14 12:07:46 · 1409 阅读 · 0 评论 -
Camera 拍照
1、背景同样这篇文章是为了练习代码的抽取能力,其实Camera的拍照后我们会获取到原始照片的数据,这些数据我们可以进行处理;比如加个滤镜,美白等等;这就是我们的美白相机了,但对于图片的处理,我们最好在底层处理;然后把处理的图片数据再转换成图片,最后展示给用户,美白相机的大体流程就是这样的,不过今天主要练习代码的抽取能力;虽然上次已经写过了,只有经过反复的训练,我们才能对怎样抽取代码,并进行封装得心用原创 2016-08-14 16:52:55 · 516 阅读 · 0 评论 -
实现把一个音频文件的视频抽取出来
前言一个音视频文件是由音频和视频组成的;我们可以通过MediaExtractor、MediaMuxer把音频或视频给单独抽取出来;抽取出来的音频和视频能单独播放;知识结构MediaExtractor :作用是把音频和视频的数据进行分离; 它常用的方法有:1、setDataSource(String path): 即可以设置本地文件又可以设置网络文件 Sets the data source (原创 2016-10-09 22:47:58 · 5488 阅读 · 0 评论 -
拍摄照片和视频
在Android多媒体开发中我们最常用的就是照片、视频的拍摄。其实在开发中我们不会自己去写一个照相机、摄像机程序,而是去调用系统中已经存在的照相、摄影程序;拍摄照片1:布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.co原创 2016-04-17 13:06:07 · 610 阅读 · 0 评论