前文回顾 音频处理 留个小思考 总结 本文首发地址 https://h89.cn/archives/146.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 源码地址: Gitee: OpenGLRecorder 通过 前文 我们知道了如何采集 Camera 视频,叠加水印、贴纸保存为MP4,但是录制视频并没有音频,本文进一步介绍添加音频录制实现。 前文回顾 前文介绍的视频处理流程及主要类如下 CameraGlView 用来显示Camera预览的View CameraGlView extends GLSurfaceView 创建 SurfaceTexture 来显示 Camera 预览,参见 CameraRenderer.java mSurfaceTexture = new Surface

- 阅读剩余部分 -

引言 updateTexImage 简单使用 SurfaceTexture 初始化相关源码分析 Surface 绘制流程源码分析 createBufferQueue 源码分析 SurfaceTexture 之 updateTexImage 源码分析 结尾 本文首发地址 https://h89.cn/archives/140.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 引言 在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTex

- 阅读剩余部分 -

前言 视频采集 视频编码 视频编码写入 结语 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134896821 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 通过 文2 我们知道了 MediaRecorder 各个接口 Framework 中的实现。 通过 文3 我们 知道了 MediaRecorder 底层音频的采集、编码、写入文件等详细流程。 本文主要介绍 MediaRecorder 视频的采集、编码等相关流程。 视频采集 在 文1 我们知道了如何使用 MediaRecorder 录制音频,那么如何同时录制声音和视频呢,可以参见 Demo Camera2Video,这里不再贴代码。 通过此示例,我们知道录制视频需要如下设置

- 阅读剩余部分 -

前言 音频采集 音频初始化 AudioRecord 分析 AudioSource 采集到音频 音频编码 音频编码后数据处理 MPEG4Writer写入音频编码后数据到文件 MPEG4Writer::Track 取编码后的音频编数据 结语 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134896808 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 通过安卓MediaRecorder(2)录制源码分析,我们知道 MediaRecorder 相关接口是在 StagefrightRecorder.cpp 中实现,本文进一步分析音频采集、编码、写入文件详细流程。 音频采集 音频初始化 通过前文,我们知道 setupAudioEncode

- 阅读剩余部分 -

前言 JAVA new MediaRecorder() 源码分析 android_media_MediaRecorder.cpp native_init() MediaRecorder.java postEventFromNative android_media_MediaRecorder.cpp native_setup() MediaRecorder 参数设置 MediaRecorder.prepare 分析 MediaRecorder.start 分析 MediaRecorder.stop 分析 结语 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134634628 最新更新地址 https://gitee.com/chenjim/chenjimblog 前言 通过 前文1,我们已经知道如

- 阅读剩余部分 -

概述 分析 影响编码速度的因素 影响画面清晰度的因素 解决方案 1. Profile方法 2. Bitrate方法 3. Biterate Mode方法 4. 时间戳正确设置 原文地址:https://aijishu.com/a/1060000000079293 本文地址:https://h89.cn/archives/10.html 最新更新地址:https://gitee.com/chenjim/chenjimblog 概述 在安卓平台为了实现h264视频编码,我们通常可以使用libx264, ffmpeg等第三方视频编码库,但是如果对编码的速度有一定的要求,要实现实时甚至超实时的高速视频编码,我们并没有太多选项,只能使用Android提供的MediaCodec硬编码模块。 MediaCodec模块在实际使用中会遇到很多问题,本文主要讨论使用Medi

- 阅读剩余部分 -

默认视频编码是VP8源码分析 修改支持H264编码 本文首发地址 https://h89.cn/archives/1.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 首先得让mediasoup支持H264编解码,参见 前文 默认视频编码是VP8源码分析 相关源码流程、注释如下 //文件 RoomClient.java 中 @WorkerThread private void joinImpl() { mMediasoupDevice = new Device(); //从服务端获取编解码能力 String routerRtpCapabilities = mProtoo.syncRequest("getRouterRtpCapabilities"); //最终会调用到

- 阅读剩余部分 -

1. 修改 ffmpeg_generated.gni 开启 openh264 编解码 2. 增加 codec_list parser_list h264 支持 3. 增加文件 LibH264Decoder.java 4. 增加文件 LibH264Encoder.java 5. 增加 h264_codec.cc 6. 修改H264 Create() 7. 修改 sdk/android/BUILD.gn 8. 修改 SoftwareVideoDecoderFacoty.java 和 SoftwareVideoEncoderFacoty.java 9. 编译使用吧,祝好运。。。 本文首发地址 https://h89.cn/archives/6.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 本文基于libmediasoupcl

- 阅读剩余部分 -