音频解码

Android知识体系总结2020之Android部分原生图片音视频(非JNI)开发篇

こ雲淡風輕ζ 提交于 2020-04-08 11:04:10
1.原生图片开发 Bitmap 2.原生视频开发 VideoView IJKPlayer GSYPlayer JiaoZiPlayer 3.原生音频开发 MediaPLayer SoundPool 面试题(检测自己学的怎么样) 1.之前有过音视频开发经验吗 & 说说用哪些开源架子开发的。 2.FFmpeng了解过吗? 3.Android中播放视频音频的方式有哪些? 4.Android中播放网络地址视频有哪些出色的开源库? 5.流媒体服务器了解吗? 6.谈谈你对编码格式的理解。 7.MediaPlayer和SoundPool的区别? 8.视频硬解码和软解码的区别? 9.MediaPlayer和SoundPool区别 注意:文章末尾面试题来自于笔者自己总结,想求答案或者交流,start 笔者GitHub项目 AndroidFaceInterview 更新时间:2020-01-15 来源: oschina 链接: https://my.oschina.net/ClAndEllen/blog/3224504

Android 能够暂停的录音功能

99封情书 提交于 2020-03-29 12:17:19
Android ApI提供了MediaRecorder和AudioRecord两个类给开发者来很方便地实现音视频的录制(前者可以实现音频和视频的录制,后者只能实 现音频的录制)。这两个类都提供了start()和stop()方法用于开始和结束音频或视频的录制,但令人费解的是这两个类都没有提供pause()方 法用于暂停录制音视频,因为在实际应用当中,暂停录制的功能是非常有必要的Android 实现能够暂停的录音功能 需实现音频录制的暂停功能,并且生成的音频文件格式必须是m4a格式 为什么项目中音频文件一定要采用m4a格式的呢?有以下几点原因: 1. 录制相同时间的音频,使用m4a格式存储的文件的大小要比使用其它格式类型存储的文件的大小要小(通过实验多次,在相同采样率16000的情况下,一般录 制5分钟的音频,采用m4a格式存储的音频文件只有1.2Mb,而采用arm、mp3及其它格式的一般都有2-5Mb),这样当用户需要 下载 或上传录制的音频文件时,可以节省流量,并且相同压缩率的前提下,m4a格式音频的音质相比其它格式的也更高; 2.产品同时拥有Android客户端和IOS客户端,那为了避免使用Android客户端的用户录制的音频上传到服务器之后,使用IOS客户端的用户下 载下来发生无法播放的问题,我们需统一录制音频的存储格式

从DRA音频标准(国标级)来看技术创新(一)

落花浮王杯 提交于 2020-03-26 03:25:48
先来看一下DRA音频国家标准大事记的列表,就可以了解DRA的辉煌历程: 2004 年 6 月 广州广晟数码技术有限公司成立(以下简称广晟数码),公司由广东省广晟资产管理有限公司投资、技术团队以其技术方案入股的方式组建。广晟数码致力于我国自主知识产权的数字音视频编解码技术研发。--- [Liupin]为一编解码算法成立一公司,足可以看出现在对标准的制定的重视,现在牛的公司都是去制定行业的标准,这样同行业再做,你必须去follow这个标准。如Dolby, Qualcomm, Coding Technology(现被Dolby收购)等都是告技术授权来发财的 8 月 广晟数码完成了 DRA 编解码软件的开发工作。 12 月 广晟数码完成了 DRA 解码算法在 DSP 专用芯片的技术实现。 2005 年 1 月 基于 Motorola 56367 定点 DSP 的 DRA 专业解码器研制完成,并制造出样机。 3 月 首台 DRA 多声道数字音频实时解码器 DRA-MD1 诞生。 4 月 广播电影电视总局广播电视规划院对 DRA 音频编解码技术的效果进行了主观和客观评测。对广晟数码数字音频编码软件和解码硬件的测试结论为:“达到了 EBU (欧洲广播联盟)定义的“不能识别损伤的”音频质量。” 9 月 30 日 由信息产业部科技司

rtmp发送H264及aac的音视频

淺唱寂寞╮ 提交于 2020-03-20 18:34:10
RTMP推送的音视频流的封装形式和FLV格式相似,由此可知,向FMS推送H264和AAC直播流,需要首先发送"AVC sequence header"和"AAC sequence header",这两项数据包含的是重要的编码信息,没有它们,解码器将无法解码。   AVC sequence header就是AVCDecoderConfigurationRecord结构,该结构在标准文档“ISO-14496-15 AVC file format”中有详细说明。   AAC sequence header存放的是AudioSpecificConfig结构,该结构则在“ISO-14496-3 Audio”中描述。AudioSpecificConfig结构的描述非常复杂,这里我做一下简化,事先设定要将要编码的音频格式,其中,选择"AAC-LC"为音频编码,音频采样率为44100,于是AudioSpecificConfig简化为下表:   这样,AVC sequence header和AAC sequence header的内容可以基本确定了,更详细的信息,大家可以去翻阅相关文档。 在发送这两个header需要在前面分别加上 VideoTags、AudioTags 这连个tags都是1个字节(8bits)的数据 其中AudioTags每bit表示的意义如下图: 其中SoundData

FFmpeg深入分析之零-基础

二次信任 提交于 2020-03-17 14:19:44
某厂面试归来,发现自己落伍了!>>> FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂。本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一些编解码部分,只有真正了解了多媒体处理的基本流程,研读ffmpeg源代码才能事半功倍。 下面分析一下多媒体中最基本最核心的视频解码过程,平常我们从网上下载一部电影或者一首歌曲,那么相应的多媒体播放器为我们做好了一切工作,我们只用欣赏就ok了。目前几乎所有的主流多媒体播放器都是基于开源多媒体框架ffmpeg来做的,可见ffmpeg的强大。下面是对一个媒体文件进行解码的主要流程: 1. 解复用(Demux) 当我们打开一个多媒体文件之后,第一步就是解复用,称之为Demux。为什么需要这一步,这一步究竟是做什么的?我们知道在一个多媒体文件中,既包括音频也包括视频,而且音频和视频都是分开进行压缩的,因为音频和视频的压缩算法不一样,既然压缩算法不一样,那么肯定解码也不一样,所以需要对音频和视频分别进行解码。虽然音频和视频是分开进行压缩的,但是为了传输过程的方便,将压缩过的音频和视频捆绑在一起进行传输。所以我们解码的第一步就是将这些绑在一起的音频和视频流分开来,也就是传说中的解复用,所以一句话

FFmpeg学习6:视音频同步

混江龙づ霸主 提交于 2020-03-09 06:56:43
在上一篇文章中,视频和音频是各自独立播放的,并不同步。本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的。主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 PTS 计算视频中Frame的显示时间 获取Audio clock(audio的播放时长) 将视频同步到音频上,实现视音频同步播放 视音频同步简单介绍 一般来说,视频同步指的是 视频和音频同步 ,也就是说播放的声音要和当前显示的画面保持一致。想象以下,看一部电影的时候只看到人物嘴动没有声音传出;或者画面是激烈的战斗场景,而声音不是枪炮声却是人物说话的声音,这是非常差的一种体验。 在视频流和音频流中已包含了其以怎样的速度播放的相关数据,视频的帧率(Frame Rate)指示视频一秒显示的帧数(图像数);音频的采样率(Sample Rate)表示音频一秒播放的样本(Sample)的个数。可以使用以上数据通过简单的计算得到其在某一Frame(Sample)的播放时间,以这样的速度音频和视频各自播放互不影响,在理想条件下,其应该是同步的,不会出现偏差。但,理想条件是什么大家都懂得。如果用上面那种简单的计算方式,慢慢的就会出现音视频不同步的情况。要不是视频播放快了,要么是音频播放快了,很难准确的同步。这就需要一种 随着时间会线性增长的量 ,视频和音频的播放速度都以该量为标准

打包AAC码流到FLV文件

人盡茶涼 提交于 2020-03-07 02:30:36
AAC编码后数据打包到FLV很简单。 1. FLV音频Tag格式 字节位置 意义 0x08, // 0, TagType 0xzz, 0xzz, 0xzz, // 1-3, DataSize, 0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampExtend 0x00, 0x00, 0x00, // 8-10, StreamID 0xzz, // 11, AudioTag Header 0x0b, // 12, AACPacketType (如果不是AAC编码 没有这个字节) 0xzz ... 0xzz // 音频数据 2. AudioTagHeader 音频Tag头一般由一个字节定义(AAC用两个字节),第一个字节的定义如下: 音频格式 4bits | 采样率 2bits | 采样精度 1bits | 声道数 1bits| 音频格式 4bits 0x00 = Linear PCM, platform endian 0x01 = ADPCM 0x02 = MP3 0x03 = Linear PCM, little endian 0x04 = Nellymoser 16-kHz mono 0x05 = Nellymoser 8-kHz mono 0x06 = Nellymoser 0x07 = G.711 A-law

AAC--ffmpeg解码AAC

余生长醉 提交于 2020-03-01 16:26:52
本篇FFMEPG实现对AAC解码,解码结果保存wav格式。对AAC编码文件来说,编码根据音频参数编码,解码根据音频参数重新构建声波,FFMPEG构建的音频存储方式不一定支持播放, 所以需要重采样样本,如AAC解码的样本格式AV_SAMPLE_FMT_FLTP。AAC的解码器如果是外部解码器"aac",解码格式需要AV_SAMPLE_FMT_FLTP,如果是“libvo_aacenc”这个解码器需要格式AV_SAMPLE_FMT_S16。 AVFormatContext * pFormatCtx = avformat_alloc_context ( ) ; //打开封装格式 avformat_open_input ( & pFormatCtx , INPUT_FILE_NAME , NULL , NULL ) ‘ avformat_find_stream_info ( pFormatCtx , NULL ) ; // Dump valid information onto standard error av_dump_format ( pFormatCtx , 0 , INPUT_FILE_NAME , false ) ; // Find the first audio stream👉👉int audioStream // Get a pointer to the codec

AAC---音频重采样

北城以北 提交于 2020-03-01 02:35:49
音频处理中,有时不同的编解码器支持的音频格式不一样,原始采样的音频数据可能没法直接直接为编解码器支持,如FFMPEG编码MP3格式的音频,就要求样本采用AV_SAMPLE_FMT_S16P格式保存。 这就需要对不同的音频格式转换,需要重采样。 1 、如果PCM文件采用交叉存储方式,视频帧的概念可能没什么影响,因为数据都是LRLRLR . . . LR方式; 2 、如果采用平行存储方式,L . . . LR . . . RL . . . LR . . . R , 一帧必须按照指定的数据读取了 , 如MP3读取一帧需要读取 1152 * 2 ( 通道数 ) 个样本,然后前 1152 为左声道,后 1152 为右声道。 代码实现音频重采样 把交叉存储的双声道立体声转换成平行存储的双声道立体声 /******************************************************************************* Copyright (c) wubihe Tech. Co., Ltd. All rights reserved. -------------------------------------------------------------------------------- Date Created: 2014-10-25 Author:

FFmpeg从入门到出家(FLV文件结构解析)

我是研究僧i 提交于 2020-02-26 12:29:24
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式。其标准定义为《Adobe Flash Video File Format Specification》。RTMP协议也是基于FLV视频格式的。 FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件。 图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可以很容易的看到文件的组成结构。 3.1 文件结构 从整个文件上看,FLV是由Header和File Body组成,如下图所示: 图5. FLV文件总体结构 1.FLV Header - 长度为9,其结构的标准定义参见标准定义见E.2 The FLV header; FLV File Body - 由一连串的PreviousTagSize + Tag构成。previousTagSize是4个字节的数据,表示前一个tag的size。标准定义参见E.3 The FLV File Body。 以图3. FLV文件结构示例1为例分析整体结构: 1.位置0x00000000 - 0x00000008, 共9个字节,为FLV Header,其中: ◦0x00000000 - 0x00000002 :