音视频
海盗的帽子
这个作者很懒,什么都没留下…
展开
-
基于 SurfaceView、AudioTrack、MediaCodec 和 MediaExtractor 解码 MP4 播放
一. 前言上篇文章介绍了 基于Camera、AudioRecord 、MediaCodec 和 MediaMuxer 录制 MP4 , 录制的过程是这样的,那么相应的播放过程就是上述过程的逆过程,本篇文章将介绍如何通过 MediaExtractor 分离视频流和音频流,再通过 MediaCodec 解码,将数据传递给 SurfaceView 播放视频,给 AudioTrack 播放音频。MediaExtractorMediaExtractor 是 MediaMuxer 的逆过程,主要用于音视频混合数据原创 2020-08-21 11:23:15 · 550 阅读 · 1 评论 -
基于Camera、AudioRecord 、MediaCodec 和 MediaMuxer 录制 MP4
一.前言在 AAC 音频编码保存和解码播放和Camera 视频采集,H264 编码保存两篇文章中介绍了如何通过 AudioRecord 和 MediaCodec 录制 AAC 音频以及如何通过 Camera和 MediaCodec 录制 H264 视频。本文将介绍如何通过 MediaMuxer 合成 MP4 文件。MP4在 音视频开发基础概念中有介绍过,MP4 (或者称 MPEG-4) 是一种标准的数字多媒体容器格式,可以存储音频数据和视频数据。对于视频格式,常见的是 H264 和 H265;原创 2020-08-20 17:54:09 · 1761 阅读 · 2 评论 -
Camera 视频采集,H264 编码保存
一. 前言上篇文章《AAC 音频编码保存和解码播放》 讲述了通过 AudioRecord 录制音频数据,并通过 AAC 编码保存为 AAC 文件。这里的 aac 既是一种编码方式,也是一种容器,因此可以直接播放。本篇文章讲讲述如何使用 Camera 采集音频音频数据,并通过 H264 编码保存为 .h264 文件,因为 .h264 不是标准的容器,所以不能直接播放,但是可以通过 ffmpeg 播放。二. Camera 的预览和数据采集1. Camera 的预览Camera 的预览需要使用 Surfa原创 2020-08-04 14:57:57 · 1479 阅读 · 0 评论 -
AAC 音频编码保存和解码播放
一. 编码器 MediaCodecMediaCodec 是 Android 提供的用于对音频进行编解码的类,属于硬编解。MediaCodec 在编解码的过程中使用了一组缓冲区来处理数据。如下图所示:基本使用流程如下:// 1 创建编解码器MediaCodec.createByCodecName() // createEncoderByType , createDecoderByType// 2 配置编解码器configure(@Nullable MediaFormat format, @Nu原创 2020-07-31 19:46:27 · 1403 阅读 · 0 评论 -
音频数据采集-AudioRecord
一. AudioRecord 和 MediaRecorderAndroid 提供了两个 API 用于录音,AudioRecord 和 MediaRecorderAudioRecord:能够获取原始的 PCM 数据,实现音频数据的实时处理,PCM 音频不能直接播放,需要通过 AudioTrack 播放。MediaRecorder:封装了编码器,内部集成了录音,编码等功能,但是支持的格式较少,且不能实时处理音频数据。因此在需要处理音频数据的基础上,通常选择用 AudioRecord 来采集音频数据。原创 2020-07-30 09:45:08 · 1549 阅读 · 0 评论 -
音视频开发基础概念
一. 编译器编译器也是一种程序,其作用是将一种语言翻译为另一种语言,通常是将高级语言翻译为低级语言,或者说是将源代码翻译成能被计算机或虚拟机执行的目标代码。编译器的主要工作流程是:源代码-预处理器-编译器-目标代码-链接器-可执行文件另一个角度的工作流程:词法分析-语法分析-语义分析-中间代码生成-代码优化-目标代码生成-目标代码优化编译器的种类“本地”编译器用来生成与编译器本身所在环境操作系统(平台)相同的环境运行的目标代码的编译器叫“本地”编译器。“交叉”编译器生成用来在其他平台上运行的原创 2020-07-28 16:04:09 · 786 阅读 · 0 评论