自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 基于 SurfaceView、AudioTrack、MediaCodec 和 MediaExtractor 解码 MP4 播放

一. 前言上篇文章介绍了 基于Camera、AudioRecord 、MediaCodec 和 MediaMuxer 录制 MP4 , 录制的过程是这样的,那么相应的播放过程就是上述过程的逆过程,本篇文章将介绍如何通过 MediaExtractor 分离视频流和音频流,再通过 MediaCodec 解码,将数据传递给 SurfaceView 播放视频,给 AudioTrack 播放音频。MediaExtractorMediaExtractor 是 MediaMuxer 的逆过程,主要用于音视频混合数据

2020-08-21 11:23:15 503 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 1647 2

原创 Camera 视频采集,H264 编码保存

一. 前言上篇文章《AAC 音频编码保存和解码播放》 讲述了通过 AudioRecord 录制音频数据,并通过 AAC 编码保存为 AAC 文件。这里的 aac 既是一种编码方式,也是一种容器,因此可以直接播放。本篇文章讲讲述如何使用 Camera 采集音频音频数据,并通过 H264 编码保存为 .h264 文件,因为 .h264 不是标准的容器,所以不能直接播放,但是可以通过 ffmpeg 播放。二. Camera 的预览和数据采集1. Camera 的预览Camera 的预览需要使用 Surfa

2020-08-04 14:57:57 1415

原创 AAC 音频编码保存和解码播放

一. 编码器 MediaCodecMediaCodec 是 Android 提供的用于对音频进行编解码的类,属于硬编解。MediaCodec 在编解码的过程中使用了一组缓冲区来处理数据。如下图所示:基本使用流程如下:// 1 创建编解码器MediaCodec.createByCodecName() // createEncoderByType , createDecoderByType// 2 配置编解码器configure(@Nullable MediaFormat format, @Nu

2020-07-31 19:46:27 1344

原创 音频数据采集-AudioRecord

一. AudioRecord 和 MediaRecorderAndroid 提供了两个 API 用于录音,AudioRecord 和 MediaRecorderAudioRecord:能够获取原始的 PCM 数据,实现音频数据的实时处理,PCM 音频不能直接播放,需要通过 AudioTrack 播放。MediaRecorder:封装了编码器,内部集成了录音,编码等功能,但是支持的格式较少,且不能实时处理音频数据。因此在需要处理音频数据的基础上,通常选择用 AudioRecord 来采集音频数据。

2020-07-30 09:45:08 1501

原创 认识NDK编译

一. Android ABI不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口 Application Binary Interface ( ABI ),因此使用 NDK 生成在 Android 运行 .a 或 .so (都是二进制文件)就需要指定 ABI 。 目前 NDK 支持的 ABI 如下:ABI支持的指令集CPU 架构应用armeabi-v7aarmeabi 等ARM 32 位手机

2020-07-28 16:10:38 693

原创 认识Make、Makefile、CMake和CMakeLists

一. Make在 认识编译器和C/C++编译 一文中介绍过,一个 .c/.cpp 文件从源文件到目标文件的过程叫做编译,但是一个项目中不可能只存在一个文件,这就涉及到多个文件的编译问题,在编译的过程中必然涉及某个文件的先编译,某个文件的后编译。构建过程就是安排文件的编译先后关系。Make 就是一种构建工具,属于 GNU 项目。在 Mac 上输入 make -version 可查看 make 工具的版本。>> 执行make -version >> 输出GNU Make 3

2020-07-28 16:07:59 2885

原创 音视频开发基础概念

一. 编译器编译器也是一种程序,其作用是将一种语言翻译为另一种语言,通常是将高级语言翻译为低级语言,或者说是将源代码翻译成能被计算机或虚拟机执行的目标代码。编译器的主要工作流程是:源代码-预处理器-编译器-目标代码-链接器-可执行文件另一个角度的工作流程:词法分析-语法分析-语义分析-中间代码生成-代码优化-目标代码生成-目标代码优化编译器的种类“本地”编译器用来生成与编译器本身所在环境操作系统(平台)相同的环境运行的目标代码的编译器叫“本地”编译器。“交叉”编译器生成用来在其他平台上运行的

2020-07-28 16:04:09 723

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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