Android 音视频技术
zxd_Android
一个专注于搬砖的码农。
展开
-
安卓采集摄像头画面生成MP4文件
主要用的安卓类有MediaCodec和MediaMuxer,MediaCodec负责视频数据编解码,MediaMuxer负责将编码后的数据封装成MP4文件,采集摄像头用的是camera,并且用surfaceview进行预览 1、初始化surfaceview与camera,预览摄像头的画面 private void initSurfaceHolder() { sur...原创 2018-08-05 18:16:30 · 4363 阅读 · 4 评论 -
Android 用MediaCodec ,MediaExtractor解码播放MP4文件
上一篇讲了如何采集摄像头画面并且进行编码,再进行封装成MP4格式文件,如需了解可以看 安卓采集摄像头画面生成MP4文件 本篇博客,主要讲解如何对MP4文件进行解封装,再进行解H264码流,进行画面显示。 Android 使用MediaCodec进行视频编解码工作,这里解码当然还由其来完成,那从MP4文件中提取出H264码流的工作,由MediaExtractor完成 MediaExtrac...原创 2018-08-05 21:56:28 · 6004 阅读 · 6 评论 -
Android MediaCodec 解码H264码流播放
视频编解码,编的是什么码?解的又是什么码?有没有想过?现在主流的就是H264码流,Android 采集摄像头原始帧数据 这篇博客讲解的是如何从摄像头从提取YUV画面色值,然后由MediaCodec进行编码压缩,最后生成的就是H264码流,我们先了解下H264码流格式。 可以看到一个个NALU单元组成了H264码流,NALU单元又包含头数据部分和帧数据部分。 每一个头开始都包含0x ...原创 2018-08-05 22:43:40 · 5301 阅读 · 6 评论 -
MediaCodec 编码时间戳问题
在MediaCodec 的编码时候,需要调用queueInputBuffer( int index, int offset, int size, long presentationTimeUs, int flags) 函数,将装有待编码的帧字节数组传给编码器,第四个参数 代表的编码时间戳,这个编码时间戳非常重要,单位是 微秒,不传或者传错,都会导致解码错误甚至播放不了。 1、不要赋值0,网上好多...原创 2018-08-28 11:34:50 · 6438 阅读 · 5 评论 -
AudioRecord 采集音频PCM数据
AudioRecord 可以用来采集音频原始数据(PCM)格式,使用起来非常简单。 主要就是构造函数的定义 AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes) 1、audioSource = MediaRecorder.Aud...原创 2018-08-28 15:08:01 · 1472 阅读 · 0 评论 -
AudioTrack 播放PCM音频数据
AudioTrack 可以用来播放PCM数据,上一篇博客我讲了AudioRecord可以录制PCM数据 AudioTrack实例可以在两种模式下运行:静态或流式传输。 在Streaming模式下,应用程序使用write()方法之一将连续的数据流写入AudioTrack。当数据从Java层传输到native层并排队等待回放时,这些是阻塞和返回。在播放音频数据块时,流模式最有用,以下情形适用于流模...原创 2018-08-28 16:21:05 · 2267 阅读 · 3 评论