Android MediaCodec 解码H264码流播放

视频编解码,编的是什么码?解的又是什么码?有没有想过?现在主流的就是H264码流,Android 采集摄像头原始帧数据 这篇博客讲解的是如何从摄像头从提取YUV画面色值,然后由MediaCodec进行编码压缩,最后生成的就是H264码流,我们先了解下H264码流格式。 可以看到一个个N...

2018-08-05 22:43:40

阅读数 725

评论数 1

Android 用MediaCodec ,MediaExtractor解码播放MP4文件

上一篇讲了如何采集摄像头画面并且进行编码,再进行封装成MP4格式文件,如需了解可以看 安卓采集摄像头画面生成MP4文件 本篇博客,主要讲解如何对MP4文件进行解封装,再进行解H264码流,进行画面显示。 Android 使用MediaCodec进行视频编解码工作,这里解码当然还由其来完成,那从...

2018-08-05 21:56:28

阅读数 1117

评论数 2

安卓采集摄像头画面生成MP4文件

主要用的安卓类有MediaCodec和MediaMuxer,MediaCodec负责视频数据编解码,MediaMuxer负责将编码后的数据封装成MP4文件,采集摄像头用的是camera,并且用surfaceview进行预览 1、初始化surfaceview与camera,预览摄像头的画面 ...

2018-08-05 18:16:30

阅读数 661

评论数 1

Android 源码分析 Activity的启动模式

一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityRecord,TaskRecord,ActivityStack等概念,写这篇博客之前,我也百度了不少...

2019-05-04 22:49:16

阅读数 838

评论数 0

Android Visca 协议控制电子云镜(Android ndk)

项目是个教学类TV应用,有一个功能是要控制摄像机的云台控制,就是控制跟踪摄像机的方向(上,下,左,右); 摄像机的焦距(远和近),预制位调用等功能。与跟踪摄像机的通信基于sony 的visca协议,visca协议是我自己封装,用C++代码实现,所以本篇博客主要 ...

2019-04-09 21:18:17

阅读数 47

评论数 0

项目疑难杂症记录(五):fragment生命周期都回调了,却不见其页面展示

继续记录我的疑难bug解决过程,这次要说的bug相比前几篇来说,更难定位,因为影响较大,直接导致不解决这个bug,根本就没有办法出版本,两三个同事定位了半天也没有结果,最后我自告奋勇的暂时放下手中的工作任务,去解决,因为我确实很喜欢解决疑难的bug,哈哈,这里面小小自吹一下哈~~ 主要的现象是一些...

2019-03-28 15:30:28

阅读数 49

评论数 0

Android 7.0后 播放U盘中的视频文件的解决方案

背景介绍: TV项目的系统是Android N,里面有个产品需求:是做一个视频文件管理器,检测到U盘插入之后,读取里面的视频文件,展示出来,并且支持点击播放,就是如下样式(项目实际运行展示的效果) 我们知道,如果要播放一个视频文件,必须要给播放器 设置一个路径或者Uri,一般是Uri uri=U...

2019-03-02 12:57:00

阅读数 307

评论数 2

项目中的一个技术方案替换历程(surfaceview+fragment 变成悬浮窗window)

背景: 项目中UI层有SurfaceView,其渲染展示的是摄像机等采集画面,但是测试提了一个问题单,如果在当前页面中跳出到其他页面,会crash,经过log分析,是由于surfaceview 在失去焦点的时候会走到onDestroy方法,也就是surfaceview会失效。 解决思路:surfa...

2019-02-18 20:16:55

阅读数 186

评论数 0

项目疑难杂症记录(四):Activity被重新创建的原因分析

在项目中遇到一个奇怪的Bug,插上带有升级包固件的U盘,选择升级框中的放弃按钮,Activity被onDestroy,随后又重新onCreate,相应的图片和日志如下: 【一】 现象和日志 1、升级框 2、点击放弃按钮 3.日志如下: 1528 D MainActivity: onC...

2019-01-31 13:58:15

阅读数 75

评论数 0

项目疑难杂症记录(三):EditText获取不到焦点了?

本篇依然讲的是焦点方面的问题,还是老样子,先看下出问题的现象,gif走起~ 从动图上可以看到,进入二级页面,焦点向下移动,编辑框没有获取到焦点,后向上移动焦点,才获取到,是不是很神奇? 我们知道EditText和Button一样,是默认可获取焦点的,但是这里面没有获取到,这里面页面不是listv...

2018-12-16 21:30:24

阅读数 52

评论数 0

项目疑难杂症记录(二):焦点移动不了

本篇讲焦点移动不了的问题,先下下图效果。 进入“添加网络摄像机”页面后,遥控器按下往右的按键,焦点只落在第一个框上面,再也移动不了,页面拍的不是很清楚,需要仔细看下。 正常焦点移动,是系统根据某个具体的方向去查找,然后判断每个可以获取焦点的view的坐标是否是最合适获取焦点的 经过定位:发现是三...

2018-12-11 20:52:55

阅读数 96

评论数 0

项目疑难杂症记录(一):fragment单例导致的界面异常

前言:之前项目中也会遇到一些头疼的问题或者难解的bug,有些可能花费不少时间精力解决了,但是没有记录,打算从本篇博客开始,记录下项目中遇到的我认为的疑难杂症,算是对自己学习的总结,如果凑巧你也看到了,并且对你有一定的帮助,那将会是一件很有意义的事情。 最近同事做Tv项目,遇到了界面上一个奇怪的并且...

2018-12-08 15:57:18

阅读数 261

评论数 0

GridView xml中设置android:focusable="false"无效的原因

最近Tv项目中有个小问题,需要gridview展示内容,但是不可获取焦点,于是xml中设置android:focusable=“false”,设想会成功,但是实际操作,发现还是可以获取焦点,只有在代码中设置setFocusable(false)才起作用,这个问题当时有点搞不懂,带着这个问题,我去从...

2018-12-02 16:08:00

阅读数 216

评论数 0

GLSurfaceView源码分析以及简单使用

GLSurfaceView源码分析以及简单使用 一、 GLSurfaceView 如果我们没有使用过,从名字可以看出其与OpenGL以及Surfaceview有关,GLSurfaceView有以下特点: 1、管理surface,一块特别的内存区域给Android 视图系统。 2、管理EGL展示,能...

2018-09-20 20:01:42

阅读数 199

评论数 0

从源码角度理解 FragmentTransaction实现

谈到fragment的使用,肯定绕不过FragmentTransaction事务,对fragment的操作必定用到它,其提供show,hide,add,remove,replace等常用的fragment操作,最后commit操作,这么强大的管理类,它内部是如何实现的呢?为什么可以连续调用多个ap...

2018-09-04 14:12:22

阅读数 216

评论数 0

源码角度解释fragment的坑(二)

如果你已经使用过fragment,我先提出几个问题。 1、按返回键的时候,如果当前的fragment是加入到栈的(其实这个说法不是很准确,因为真正加入栈的是操作fragment的事务),那么这个fragment会被remove掉,而如果没有加入栈,那么回退按键对这个fragment一点反应也没有...

2018-09-03 18:06:11

阅读数 68

评论数 0

从源码角度解释 fragment 坑(一)

fragment 自从被Android官方推出以来,就得到了广泛的应用,很多项目中都会使用多个fragment代替Activity进行页面展示,但是由于fragment使用起来相对复杂,如果不是很熟悉,使用起来就会存在一些问题,很难定位,下面我就举出一些我之前项目中存在的部分问题,并且从源码角度进...

2018-09-01 14:38:53

阅读数 189

评论数 0

AudioTrack 播放PCM音频数据

AudioTrack 可以用来播放PCM数据,上一篇博客我讲了AudioRecord可以录制PCM数据 AudioTrack实例可以在两种模式下运行:静态或流式传输。 在Streaming模式下,应用程序使用write()方法之一将连续的数据流写入AudioTrack。当数据从Java层传输到...

2018-08-28 16:21:05

阅读数 530

评论数 2

AudioRecord 采集音频PCM数据

AudioRecord 可以用来采集音频原始数据(PCM)格式,使用起来非常简单。 主要就是构造函数的定义 AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bu...

2018-08-28 15:08:01

阅读数 241

评论数 0

MediaCodec 编码时间戳问题

在MediaCodec 的编码时候,需要调用queueInputBuffer( int index, int offset, int size, long presentationTimeUs, int flags) 函数,将装有待编码的帧字节数组传给编码器,第四个参数 代表的编码时间戳,这个编码...

2018-08-28 11:34:50

阅读数 1036

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭