音视频
文章平均质量分 78
xiaopangcame
这个作者很懒,什么都没留下…
展开
-
AudioService之音频输出通道切换
(2)播放模式,也叫音频状态,手机有4种音频状态:待机状态,音视频通话状态,视频/VoIP通话状态与响铃状态,这4种状态对底层的音频输出设备的选择影响很大,相应的情景下就得使用相应的模式,如视频情景的播放模式就是MODE_IN_COMMUNICATION,或者,播放音乐情景的播放模式就是MODE_NORMAL,什么样的情形就得用什么样的播放模式,不能搞混,比如MODE_IN_CALL,就只能由通话时才能使用;所以,当手机中的音频输出设备有耳机,听筒和扬声器时,会根据设备的优先级来进行选择;原创 2022-11-27 20:30:16 · 673 阅读 · 0 评论 -
Engine::getDeviceForStrategyInt()解析
【代码】Engine::getDeviceForStrategyInt()解析。原创 2022-11-27 17:16:55 · 425 阅读 · 0 评论 -
音频输出设备的选择
然后看③: audio_devices_t device = getDeviceForStrategy(strategy, false /*fromCache*/);再看②: routing_strategy strategy = (routing_strategy) getStrategyForAttr(&attributes);content_type:具体输出类型。场景:使用AudioTrack播放一段音频,streamtype是AUDIO_STREAM_MUSIC;原创 2022-11-27 16:47:02 · 967 阅读 · 0 评论 -
Android 音频源码分析——AudioTrack设备选择
基于Andorid9.0源码以AudioTrack为例,梳理下输出设备选择流程。音频设备选择的影响因素:AudioAttributes 声音流类型setForceUse 设置setPreferredDevice设置 (AudioRecord、AudioTrack、MediaRecorder、MediaPlayer)等。。。。待研究一、大多数情况输出设备选择直接从AudioTrack.cpp 开始。原创 2022-11-27 12:14:56 · 1979 阅读 · 0 评论 -
Android音频——音量调节
它可以写到声卡里面去,控制所有声音的音量。b.5 每一个SeekBar对应一个stream,滑动SeekBar时会设置该stream的音量,也会去设置同属一个alias(同一分组)的其他stream的音量。对于MixerThread(多个App共用一个声卡进行混音的的),APP对音量的设置不会影响到声卡的硬件音量,而只会影响APP的音频数据的幅值(变小或放大),它会把设置的值放在自己的私有成员里面,也会放到共享内存的头部。:设置的是同一组stream的音量,比如使用某个音量调节滑动条设置的音量。原创 2022-11-08 15:33:25 · 2030 阅读 · 0 评论 -
AudioService之音频输出通道切换
(2)播放模式,也叫音频状态,手机有4种音频状态:待机状态,音视频通话状态,视频/VoIP通话状态与响铃状态,这4种状态对底层的音频输出设备的选择影响很大,相应的情景下就得使用相应的模式,如视频情景的播放模式就是MODE_IN_COMMUNICATION,或者,播放音乐情景的播放模式就是MODE_NORMAL,什么样的情形就得用什么样的播放模式,不能搞混,比如MODE_IN_CALL,就只能由通话时才能使用;所以,当手机中的音频输出设备有耳机,听筒和扬声器时,会根据设备的优先级来进行选择;原创 2022-11-08 14:29:49 · 928 阅读 · 1 评论 -
Android SoundPool插入耳机后依然有外放声音
低版本的系统设置STREAM_NOTIFICATION还是会响,改成STREAM_MUSIC就可以了。只需要把流类型改为AudioManager.STREAM_NOTIFICATION类型即可。原创 2022-11-04 17:51:48 · 500 阅读 · 0 评论 -
android-camera方向
及它不需要等待手机旋转了90度才会有反应,而是在手机旋转了任何角度的时候,都会回调onOrientationChanged告诉你当前手机的角度,当然,如果你只希望得到4个角度的变化事件,可以自己在该函数中做判断。我们可以通过CameraInfo对象的Orientation属性获取图像传感器的图像采集方向,该属性是一个角度值,只能有0,90,180,270四个中的一个,这几个角度值是相对于手机的“自然方向”来说的。对于Camera,默认情况下,手机横屏,HOME键在右边,这个方向是Camera的0度方向。..原创 2022-07-17 17:00:33 · 2233 阅读 · 1 评论 -
YUV420P旋转
YUV和我们熟知的RGB类似,是一种颜色编码格式。它主要用于电视系统和模拟视频邻域(如Camera系统)。YUV包含三个分量,其中Y表示明亮度(Luminance或Luma),也就是灰度值。而U和V则表示色度(Chrominance或Chroma),作用是描述图像色彩及饱和度,用于指定像素的颜色。没有UV分量信息,一样可以显示完整的图像,只不过是黑白的灰度图像。YUV格式的好处是很好地解决了彩色电视机与黑白电视机的兼容问题。...原创 2022-07-16 19:04:37 · 425 阅读 · 0 评论 -
Android 端处理 YUV 数据 - Libyuv 的编译与使用
通过libyuv进行旋转镜像转码等操作,其时长如下旋转镜像5~8mmNV21转NV120~3mm可以看到比起java代码,几乎快了3倍,这已经能够满足流畅录制的需求了httpshttpshttps。原创 2022-07-16 13:26:31 · 848 阅读 · 1 评论 -
Android音频通路的切换
Android支持多种设备的的输出。一台正常的机子,本身就自带话筒,扬声器,麦克风等多个声音输入输出设备,再加上五花八门的外置设备(通过耳机,蓝牙,wifi等方式连接),使声音的输出更具多样性。Android支持如此多的设备连接,那么android内部是怎样对设备的输出输出进行控制的呢?这一次我们主要来看看音频通路的切换。音频流、设备、音频策略要想知道Andorid是怎样对设备的输出输出进行控制的,我们首先来了解一些音频相关的基本知识: stream_type、content_type、devices、ro原创 2022-07-02 17:47:20 · 3636 阅读 · 0 评论 -
android音频焦点Audio Focus
为了便于理解,我们以android的8.0以前的版本为例,8.0以后有一定改动,但是基本思路一样。关于管理音频焦点(8.0以前和更高版本)的官方文档:https://developer.android.google.cn/guide/topics/media-apps/audio-focusDemo1地址:https://github.com/liuchenyang0515/MiniCase(该Demo包含了ListView、自定义Adapter、音频释放问题、音焦处理问题)Demo2地址:https://原创 2022-07-02 16:53:01 · 1145 阅读 · 0 评论 -
音频帧大小的计算
音频aac、mp3文档规定:AAC:帧大小1024个sample,采样率为44100Hz ,帧播放时长:acc dur=1024/44100 = 0.02322s=23.22msMP3:帧大小1152个sample,采样率为44100Hz ,帧播放时长: mp3 dur=1152/44100 = 0.02608s=26.08mspcm:假设音频采样率 = 8000,采样通道 = 2,位深度 = 8,采样间隔 = 20ms首先我们计算一秒钟总的数据量,采样间隔采用20ms的话,说明每秒钟需采集50次(1s=原创 2022-06-19 18:19:42 · 3410 阅读 · 0 评论 -
PCM数据格式
什么是PCMPCM全称Pulse-Code Modulation,翻译一下是脉冲调制编码。其实大可以不用关心英文释义,之所以这么命名是因为一些历史原因。在音视频中,PCM是一种用数字表示采样模拟信号的方法。要将一段音频模拟信号转换为数字表示,包含如下三个步骤:1.Sampling(采样)2.Quantization(量化)3.Coding(编码)通常,我们可以通过一条曲线在坐标中显示连续的模拟信号,如下图所示:为了更容易理解PCM,取其中一段来说明。 假设这表示一段一秒的音频模拟信号。Samp原创 2022-06-19 17:08:23 · 1131 阅读 · 0 评论 -
H264基础及RTP分包解包
一、 H.264基础概念SODB: 数据比特串-->最原始的编码数据RBSP: 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐。EBSP: 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码 StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,原创 2022-04-28 14:31:47 · 2040 阅读 · 0 评论 -
G.711编码原理
目录参考 概述 G.711原理 总结1. 参考[1] wikipedia/A-law_algorithm [2] github.com/quatanium/foscam-ios-sdk [3] charybdis/G711算法学习2. 概述本文目的:1、熟悉G711a/u两种格式的基本原理2、熟悉两种压缩算法的实现步骤及提供源码实现G.711是国际电信联盟ITU-T定制出来的一套语音压缩标准,它代表了对数PCM(logarithmic pulse-code modulation原创 2022-01-04 16:29:32 · 2014 阅读 · 0 评论 -
AudioTrack分析
第一部分AudioTrack分析一目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l先从API层对应的某个类开始,用户层先要有一个简单的使用流程。l根据这个流程,一步步进入到JNI,服务层。在此过程中,碰到不熟悉或者第一次见到的类或者方法,都会解释。也就是深度优先的方法。1.1分析工具分析工具很简单,就是sourc...原创 2021-09-28 10:00:42 · 405 阅读 · 0 评论 -
NV21 图像旋转处理 ( 后置摄像头顺时针旋转 90 度 | 前置摄像头顺时针旋转 90 度 )
1 . NV21 格式图像数据的排列 : 16 1616 个 Y 灰度数据在前 , 然后 4 44 组 ( 8 88 个 ) VU 色彩值 , 饱和度 , 数据交替存放 ;2 . NV21 格式的图像的 YUV 值顺时针旋转 90 度后的 YUV 矩阵为 :3 . 灰度值 Y 数据读取顺序 :① 外层循环 :逐行遍历, 从第一行遍历到最后一行, 从 0 到 mWidth - 1 ;② 内存循环 :遍历每一行时, 从底部遍历到顶部, 从 mHeight - 1 到 0 ;fo..原创 2021-08-01 20:40:06 · 1327 阅读 · 0 评论 -
AudioRecord
数字音频数字音频通常分为三步:采样、量化、编码采样:就是将获取的信号给数字化,其中有个概念就是采样频率,而人耳能听到的频率范围只有20Hz~20kHz,所以一般设置的都是44.1kHz量化:就是如何去表达采样的数据,常用使用二进制来表示声音信号的幅度编码:如何去保存采样和量化过后的数据,这就出现了很多格式,其中最基础的格式就是PCM(脉冲编码调制),就是裸数据格式完全没有压缩,PCM格式中有几个属性:量化格式、采样率、声道数量化格式:即使用多少比特的二进制去进行量化,例如我们使用16比特原创 2021-07-15 22:41:26 · 675 阅读 · 0 评论 -
Android Camera旋转角度
首先理解一下 info.orientation 官方解释官方定义:orientation 表示相机图像的方向。它的值是相机图像顺时针旋转到设备自然方向一致时的角度。例如假设设备是竖屏的。后置相机传感器是横屏安装的。当你面向屏幕时,如果后置相机传感器顶边的和设备自然方向的右边是平行的,则后置相机的 orientation 是 90。如果前置相机传感器顶边和设备自然方向的右边是平行的,则前置相机的 orientation 是 270。画了一个简单的草图,我用两部手机进行测试,一部是华为荣耀 6plus原创 2021-08-01 11:15:26 · 11784 阅读 · 1 评论 -
YUV解析
一般的视频采集芯片输出的码流一般都是 YUV 格式数据流,后续视频处理也是对 YUV 数据流进行编码和解析。所以,了解 YUV 数据流对做视频领域的人而言,至关重要。在介绍 YUV 格式之前,首先介绍一下我们熟悉的 RGB 格式。RGBRGB 分别表示红(R)、绿(G)、蓝(B),也就是三原色,将它们以不同的比例叠加,可以产生不同的颜色。比如一张 1920 * 1280 的图片,代表着有 1920 * 1280 个像素点。如果采用 RGB 编码方式,每个像素点都有红、绿、蓝三个原色,其中每个原创 2021-07-31 11:58:05 · 476 阅读 · 1 评论