音频解码

多媒体开发(12):解码aac到wav文件

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:转载就注明出处,谢谢。 https://blog.csdn.net/freejet2018/article/details/90766983 简单来说,aac是一种音频编码格式,需要解码后才能用于音频输出。aac编码格式,已经是一种很常见的音频编码格式,以至于很多系统都支持aac的编解码,比如iOS上的AudioConverterRef接口、Android上的MediaCodec接口等。 但是,不要以为用了系统的接口就是用了硬件解码,因为,这个系统接口有可能最终还是使用软件解码,比如有些手机(比如小米)的MediaCodec对于acc的解码,就是软解码,用的是google提供的OMX.google.aac.decoder,不要以为用了系统接口解码的速度就飞快了,要真是硬件支持才行的。 那什么是硬解码,什么是软解码呢?很简单,如果硬件芯片专门来做解码,就是硬解码,比如使用GPU或DSP之类的模块来处理解码就是硬解码(一般不会使用CPU),这需要硬件上的支持。而软解码就是用软件来解码了,就相当你写一个程序来解码,使用CPU来做事。优缺点方面,硬解速度快功耗低但兼容性差,软解速度慢功耗高但兼容性好。 但话说回来,不是非得要硬解码的,对于音频来说,当今的手机,除非你要大量的音效运算或合成处理,否则一般的解码,用软解码就足够了,根本就不需要硬解,硬解是视频的事情。 对于aac的解码

FFMPEG4.0 音频解码解封装

匿名 (未验证) 提交于 2019-12-02 23:36:01
FFMPEG 4.0 for Android 准备工作 下面的函数方法基于最新的FFMPEG 4.0(4.X): 音频的原始数据是pcm编码,关于PCM编码的相关信息请看这篇文章: https://www.jianshu.com/p/cfb3d4dc3676 本文的解码就是要把原始文件中的音频部分提取出来解码生成PCM文件,以下是正文,将会去除逻辑相关代码,按照流程顺序用最基础的方法展现,方便大家掌握用法: 一、获取多媒体文件的信息 1.声明并分配内存格式信息的Context avformat_context = avformat_alloc_context(); 2.打开文件读取头信息 avformat_open_input(&avformat_context,src_name,NULL,NULL); 其中avformat_context如果没有被声明分配内存,此方法会给分配。 3.某些格式没有头信息,需要读取数据来分析 avformat_find_stream_info(avformat_context,NULL); 二、解码设置 4.找到你想要的数据流,可用方法av_find_best_stream代替: int audio_stream_index = 0; //like av_find_best_stream for(i = 0;i<avformat_context-

WebRTC中的NetEQ

风格不统一 提交于 2019-11-30 19:29:00
NetEQ使得WebRTC语音引擎能够快速且高解析度地适应不断变化的网络环境,确保了音质优美且缓冲延迟最小,其集成了自适应抖动控制以及丢包隐藏算法。 WebRTC和NetEQ概述 WebRTC WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。 WebRTC主要由语音引擎、视频引擎和传输引擎组成: Voice Engine(音频引擎) iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带) NetEQ for voice(处理网络抖动和语音包丢失) Echo Canceler(回声消除)/ Noise Reduction(噪声抑制) Video Engine(视频引擎) VP8 Codec(视频图像编解码器) Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失) Image enhancements(图像质量增强) Transport SRTP(安全的实时传输协议

[Android 进阶]MediaCodec简介

两盒软妹~` 提交于 2019-11-30 10:30:10
[Android 进阶]MediaCodec简介 由于前段时间单位处理过录屏直播之类的需求,这边首推的一个系列着力于MediaCodec,该系列包含下面几片文章: [Android 进阶]MediaCodec系列之MediaCodec简介 [Android 进阶]MediaCodec系列之MediaCodec+MediaEctractor播放器 [Android 进阶]MediaCodec+MediaProjection实现录制屏幕 [Android 进阶]MediaCodec+Camera API实现摄像头录制视频(上) [Android 进阶]MediaCodec+Camera API实现摄像头录制视频(下) 本篇文章是Google官方文档的翻译,其中生命周期的概念是我重新整理过的,原文地址: https://developer.android.google.cn/reference/android/media/MediaCodec.html MediaCodec是用来访问系统底层编解码器的一个类,通常与MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface, AudioTrack等一起使用。作为与底层编解码器交流的工作类,MediaCodec的一般数据流图如下[官网图]:

ffmpeg命令详解(转)

耗尽温柔 提交于 2019-11-27 09:31:06
摘自:https://www.cnblogs.com/AllenChou/p/7048528.html FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。[百度百科] ffmpeg使用语法 ffmpeg使用语法: ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉就会起作用。 作为通用的规则,选项一般用于下一个特定的文件。如果你给 –b 64选项,改选会设置下一个视频速率。对于原始输入文件,格式选项可能是需要的。 缺省情况下,ffmpeg试图尽可能的无损转换,采用与输入同样的音频视频参数来输出。 3.选项 a) 通用选项 -L license -h 帮助 -fromats 显示可用的格式,编解码的,协议的。。。 -f fmt 强迫采用格式fmt -I filename 输入文件 -y 覆盖输出文件 -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 -ss position

ffmpeg入门教程之ffmpeg命令行瓜皮书------全局命令(翻译)

守給你的承諾、 提交于 2019-11-25 18:46:42
文章目录 ffmpeg入门教程[https://www.jianshu.com/p/042c7847bd8a](https://www.jianshu.com/p/042c7847bd8a) 本文将会持续更新,敬请关注 视频播放器原理 如何阅读官网命令行? 阅读本文的正确姿势Ctrl+F ffmpeg ffmpeg命令的语法结构 一般规则 输入参数 -i 流复制 Stream copy 流选择 Stream selection 自动流选择 Automatic stream selection 手动流选择 Manual stream selection -map 文件选择和流选择 [2:3] 流选择 -vn/-an/-sn/-dn 下面的例子说明FFmpeg的流选择方法的行为、怪癖和限制 自动字幕流选择 automatic subtitles selection 不加标签的滤镜输出 unlabeled filtergraph outputs 带标签的滤镜输出labeled filtergraph outputs 选项Options 流说明符 Stream specifiers 流索引 stream_index stream_type[:additional_stream_specifier] 通用选项 Generic options long full decoder=decoder