最近需要解码海康的裸数据流,是h264的.因为是小白,啥也不会,于是就搜吧,这样那样的问题和解决办法一大堆,一个个测试呗,结果看到MediaCodec能够解码byte[]数组的功能,于是就开始了复制粘贴....

好吧,完毕,测试,直接蹦....

华为手机测试

因为需要的就是实例化MediaCodec,所以问题不大,开始看问题

一步一步的屏蔽代码运行测试

发现在

MediaCodec mediaCodec=MediaCodec.createEncoderByType("video/avc");MediaFormat format = MediaFormat format=MediaFormat.createVideoFormat("video/avc", 640, 480);
//这里format参数设置我没写上来,有需要的自己添加
......mediacoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

上面的这一句屏蔽后,运行没问题了,那么,问题来了,是哪个参数出了问题呢?

耗费半天时间,测试到是第三个参数不能为null

原因不明,别问我为什么,因为我也小白..

然后又是一番资料查询,没看到有这方面说明的,好像就没有人出现这种情况一样,于是,我就悲剧了,自己整个参数出来呗,然后的然后,整出了个uuid

好吧,上代码

UUID uuid=UUID.randomUUID();//这个据说是可以得到本机的那什么唯一标识还是什么意思,没留意

因为mediacoder.configure(format, null, 参数三, MediaCodec.CONFIGURE_FLAG_ENCODE);

参数三是一个MediaCrypto类型的,我一向都是不知道什么意思就直接new一个出来

两个参数,一个是uuid,第二个是一个byte[]类型,这东西怎么来?不能乱写啊,

于是又开始了东翻西找

好吧,上菜

 public byte[] getCryptoByte()
{//其实吧,我对这些运算符号也真不懂....long mb = uuid.getMostSignificantBits();long lb = uuid.getLeastSignificantBits();byte[] uuids = new byte[16];for (int i = 0; i < 8; ++i) {uuids[i] = (byte)(mb >>> (8 * (7 - i)));uuids[8 + i] = (byte)(lb >>> (8 * (7 - i)));}
return uuids;
}

第二个参数有了,咱们开始 接下去测试

OK................接着蹦...原来,我以为的我以为并不是真的我以为....

回想起之前看到一个说明,说mediacoder.configure()需要在SurfaceView准备好了才能够执行,意思就是参数二还不能为null,,推到之前说的参数三不能为null的说法,继续

测试吧...为了小白说的直观点,有些东西我就用直白点的变量了

Surface 参数二=SurfaceView.getHolder().getSurface();

if(参数二.isValid){

mediacoder.configure(format, 参数二, null, MediaCodec.CONFIGURE_FLAG_ENCODE);

mediaCodec.start();

}

好吧,前面的为以为的东西就不删除了,留着吧,给自己的路一点提示.....

安卓使用MediaCodec解码h264时遇到的奇葩问题相关推荐

  1. MediaCodec解码h264流

    上一篇博文介绍了如何用MediaCodec进行h264编码,这篇介绍如何用MediaCodec进行h264解码,解码时要注意的点就是要一帧一帧的喂给解码器,编码器是一帧一帧出数据的,网上有些demo居 ...

  2. Android MediaCodec 解码H264码流播放

    视频编解码,编的是什么码?解的又是什么码?有没有想过?现在主流的就是H264码流,Android 采集摄像头原始帧数据 这篇博客讲解的是如何从摄像头从提取YUV画面色值,然后由MediaCodec进行 ...

  3. Android使用MediaCodec解码H264视频解码器

    前些日子有写了一篇博客[Android使用MediaCodec硬解码播放H264格式视频文件](http://blog.csdn.net/true100/article/details/5399293 ...

  4. MediaCodec 解码后数据对齐导致的绿边问题

    前言 本文从简书迁移,原文地址:www.jianshu.com/p/ac53e9595- Android 使用 MediaCodec 解码 h264 数据后会有个数据对齐的问题. 简单说就是 Medi ...

  5. 【FFmpeg】FFmpeg编解码H264产生马赛克、伪影的解决方法

    1.问题描述 使用FFmpeg编码H264,再解码显示时,产生马赛克:有时是在画面静止时,静止时间越长,马赛克.伪影越多:有时是在画面切入切出时:有时是在网络带宽不够时 2.原因分析 2.1 丢帧 网 ...

  6. MediaCodeC解码视频指定帧,迅捷、精确

    原创文章,转载请联系作者 若待明朝风雨过,人在天涯!春在天涯 原文地址 提要 最近在整理硬编码MediaCodec相关的学习笔记,以及代码文档,分享出来以供参考.本人水平有限,项目难免有思虑不当之处, ...

  7. ffmpeg解码H264缺少帧的解决办法

    最近用ffmpeg解码H264裸码流文件,发现解码总是少几帧.上网查了些资料,解决了. 当使用avcodec_decode_video2时,如果第三个参数的值为1,则表示完成一帧的解码,如果为0,表示 ...

  8. OpenGL.ES在Android上的简单实践:21-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 上)

    OpenGL.ES在Android上的简单实践:21-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 上) 1.录制视频需要什么? 在上篇文章,我们已经成功的满足了需求,在 ...

  9. Rockchip MPP(Media Process Platform)解码H264

    # Rockchip MPP(Media Process Platform)解码H264 1. 简介 本例完成H264格式文件解码,并保存为yuv格式文件.参考mpp_dec_test重写,进行了一部 ...

最新文章

  1. C++语言基本类型—整型
  2. 【c语言】蓝桥杯算法提高 简单加法
  3. 再谈MySQL JSON数据类型
  4. 怎么下载安装激活Adobe After Effects CC 2019教程
  5. 产品要不要做先回答的10个问题
  6. 【超级鼠标键盘锁】之远线程注入winlogon.exe进程屏蔽Ctrl+Alt+Del、Win+L
  7. C++低级程序设计支持规则
  8. 提高sql性能的方法_三种提高T-SQL性能的方法
  9. 腾讯老鸟谈,软件测试的完整流程/过程
  10. 关于信息安全工作方法论的一点猜想
  11. Windows与Linux比较:相似与不同
  12. 如何给文件夹自定义图标?
  13. 查看CPU最大支持内存容量
  14. iOS逆向:微信逆向及动态库开发过程中的坑
  15. 双目立体视觉几何框架详解
  16. Canonical_transcript-经典转录本
  17. ZLib的数据压缩和解压缩
  18. 图数据库 gStore 1.0 版本正式发布
  19. 专利申请的步骤和材料有哪些?
  20. 小米智能摄像机云台Pro如何插入视频监控存储卡

热门文章

  1. 让iPhone输入法更有“苹果”味 (一)
  2. 基于Arduino的感应垃圾桶
  3. react-router-dom v6快速上手
  4. 【必看】百度取消新闻源,您需要知道几个问题
  5. jpeg解码库使用实例
  6. 多桌面管理软件-快易桌面
  7. 绞尽脑汁,给代码取个好名字
  8. python入门爬虫,爬取女生头像(无需反爬)
  9. 微信支付下载对账单400Bad Request问题解决方式
  10. 关于“labuladong的算法小抄”的学习笔记---第0章核心框架汇总的后半部分技巧(c++版)