欢迎关注勤于奋、每天12点准时更新国外LEAD相关技术
大家好,今天继续聊聊H264流的知识,和安卓当中解析H264,这篇文章很简单,算是记录一下学习的过程,音视频要学习的知识远远不止这些东西,这只是一个开始。
创建一个解码器,怎么做?音视频解码需要一个解码器,如果使用硬件解码,我们就需要使用MediaCodec这个方法,然后使用
mediaCodec = MediaCodec.createDecoderByType(“video/avc”);
就可以创建一个解码器,解码器可以配置一些信息
mediaCodec.configure(mediaformat, surface, null, 0);这个configurt方法的意思就是配置解码器,
第一个参数就是视频信息需要创建,然后传进去,然后第二个surface就是用来播放这个解码后的视频,如果你已经创建好了,想播放就可以传个surface进去就能播放到手机了。
当然如果你只是解码,做视频编辑,那么这个参数就可以不传进去,第三个参数就是加密视频,如果没有你可以不传这个。
解码是耗时的操作,所以要放到线程里面去操作,decodeH264去解码,解码我们也写的很简单,直接放到byt里面去
InputStream is = new DataInputStream(new FileInputStream(new File(path)));
int len;
int size = 1024;
byte[] buf;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
buf = new byte[size];
while ((len = is.read(buf, 0, size)) != -1)
bos.write(buf, 0, len);
buf = bos.toByteArray();
return buf;
如果你的视频很大,比如你有2个G的视频,直接拿到这里来解码,肯定会卡死的,如果真是的项目肯定是比如1兆这样的方式去读取,不是一次性读取。
Java DataInputStream类数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。
下面的构造方法用来创建数据输入流对象。
InputStream is = new DataInputStream(new FileInputStream(new File(path)));
本篇文章来源于微信公众号: 勤于奋