Android音视频开发
乔培宸
这个作者很懒,什么都没留下…
展开
-
【Android音视频开发】声道切换
声道切换主要用到了OpenSL ES中的声道控制接口 SLMuteSoloItf 。初始化: (*pcmPlayerObject)->GetInterface( pcmPlayerObject, SL_IID_MUTESOLO, &pcmPlayPlayerMuteSolo); //设置声道: (*pcmPlayPlayerMuteSolo)->SetChannelMute( pcmPlayPlaye...原创 2021-10-12 23:38:51 · 1217 阅读 · 0 评论 -
【Android音视频开发】FFmpeg对音频数据重采样生成PCM数据
基本概念:采样率:每秒对音频数据采样的个数(44100hz)采样位数:存储采样数据的位数(16bit 2字节)输出声道:单声道、立体声(左右声道)等重采样: 就是把目标音频按照一定的格式重新采样编码成新的音频数据, 方便统一处理,一般的采样标准是:44100HZ、16bit、双声道FFmpeg重采样采样对象:解码出来的音频帧(AVframe)使用函数:SwrContextswr_ctx = swr_alloc_set_opts( struct SwrCon...原创 2021-10-11 22:51:57 · 658 阅读 · 0 评论 -
【Android音视频开发】OPenSL ES介绍
简单来说OpenSL ES是一个嵌入式、跨平台、免费的、音频 处理库。Android OPenSL ES库位置:使用 OPenSL ES 流程:1、创建接口对象2、设置混音器3、创建播放器(录音器)4、设置缓冲队列和回调函数5、设置播放状态6、启动回调函数重要接口解释1、类接口:SLObjectItf 通过SLObjectItf接口类我们可以创建所需要的各种类型的类接口,比如:创建引擎接口对象:SLObjectItf engineObject创建.原创 2021-10-11 22:29:50 · 838 阅读 · 0 评论 -
【Android音视频开发】C++队列缓存AVPacket
因为解码获取AVpakcet需要耗费一定的时间,为了达到更好地播放效果 (流畅度),需要把解码出来的AVpacket先缓存到队列中,播放时直接 从队里里面取。C++队列(queue)1、头文件 #include “queue”2、创建队列 std::queue<T> queue;3、入队 queue.push(t);4、出队 T t = queue.front();//获取队头 queue.pop();Avpac...原创 2021-09-16 00:37:41 · 710 阅读 · 0 评论 -
【Android音视频开发】C++多线程解码音频数据
FFmpeg在C++子线程中解码音频数据,得到数据包AVPacketAVPacket:存放原始音频/视频的压缩包。C++多线程解码音频数据1、注册解码器并初始化网络av_register_all();avformat_network_init();2、打开文件或网络流AVFormatContext *pFormatCtx = avformat_alloc_context();avformat_open_input(&pFormatCtx, url, NULL, N原创 2021-09-14 23:45:14 · 528 阅读 · 0 评论 -
【Android音视频开发】C++多线程/生产者消费者模型以及C++全局调用Java方法
Android C++ 线程简介我们都知道Android是基于Linux内核的,而Linux是遵循POSIX线程标准的,POSIX线程库中有 一系列Pthreads API方便我们对Linux线程的操作。所以我们在Android中使用C/C++线程也就转到 了使用POSIX线程库。他们都在头文件“pthread.h”中。创建子线程1、pthread_t: 用于声明一个线程对象如:pthread_t thread;2、pthread_creat : 用于创建一个实际的线程如:pthread原创 2021-09-13 23:25:18 · 235 阅读 · 0 评论 -
【Android音视频开发】FFmpeg解码流程
1、视频文件封装格式和编码格式介绍视频:对原始视频流的编码然后再封装的产物封装格式:mp4、mkv、avi、mp3、m4a 等编码格式:h264、h265、mpeg、wmv、aac 等如:视频.mp4 编码格式:h264 编码格式:aac 封装格式:mp4FFmpeg解码流程(图解)FFmpeg解码流程(代码)...原创 2021-09-11 00:47:20 · 302 阅读 · 0 评论 -
【Android音视频开发】创建C++项目并导入FFmpeg动态库
创建C++ Android项目勾选 c++ support 使用cmake 3.异常信息等支出添加NDK路径Project Structure安装Cmake工具Android SDK中安装CMake和LLDB添加module(library)Module添加C++支持 1、移动项目中cmakelist.txt到Module根目录下2、...原创 2021-09-10 02:12:04 · 574 阅读 · 0 评论 -
【Android音视频开发】FFmpeg移植Android平台
一.在Ubuntu(Linux)中编译Android平台的FFmpeg( arm和x86 ) 1.下载FFmpeg源码(v3.3.6)下载地址( http://www.ffmpeg.org/download.html#releases ) 2.下载NDK(r14b)下载地址( https://developer.android.google.cn/ndk/downloads/index.html) 3...原创 2021-09-09 21:26:12 · 343 阅读 · 0 评论