FFMPEG学习【libavutil】:音频相关(一)

FFmpeg源码分析:音频采样格式相关API FFmpeg针对音频采样格式的获取与处理,封装有专门工具类。音频采样格式枚举类型与相关API,位于libavutil模块的samplefmt.h,包括获取采样格式名字、获取采样格式类型、获取每个采样所占字节、获取采样数所需缓冲区大小、填充采样数组、分配采样缓冲区、拷贝采样数据、填充采样数据为静音。 阅读详情

一、音频FIFO缓冲区

一)、函数

void  av_audio_fifo_free (AVAudioFifo *af)

释放AVAudioFifo。


AVAudioFifo *  av_audio_fifo_alloc (enum AVSampleFormat sample_fmt, int channels, int nb_samples)
分配AVAudioFifo。

参数:sample_fmt:采样格式

   channels:频道数量

   nb_samples:初始分配大小,在样本中

返回:新分配的AVAudioFifo,或错误的NULL


av_warn_unused_result int  av_audio_fifo_realloc (AVAudioFifo *af, int nb_samples)
重新分配AVAudioFifo。

参数:af:AVAudioFifo重新分配

   nb_samples:新分配大小,在样本中

返回:如果OK,则为0,否则为ERROR代码


int  av_audio_fifo_write (AVAudioFifo *af, void **data, int nb_samples)
将数据写入AVAudioFifo。

如果可用空间小于nb_samples,则AVAudioFifo将自动重新分配。

参数:af:写入的AVAudioFifo

   data:音频数据平面指针

   nb_samples:要写的样本数

返回:实际写入的样本数,或失败的负错误代码。 如果成功,实际写入的样本数将始终为nb_samples。


int  av_audio_fifo_peek (AVAudioFifo *af, void **data, int nb_samples)
从AVAudioFifo中查看数据。

参数:af:从中读取的AVAudioFifo

   data:音频数据平面指针

   nb_samples:要窥探的样本数量

返回:样品数量实际窥视,否则AVERROR代码失败。 实际窥视的样本数量将不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。


int  av_audio_fifo_peek_at (AVAudioFifo *af, void **data, int nb_samples, int offset)
从AVAudioFifo中查看数据。

参数:af:从中读取的AVAudioFifo

   data:从中读取的AVAudioFifo

   nb_samples:要窥探的样本数量

   offset:偏离当前读取位置

返回:样品数量实际窥视,否则AVERROR代码失败。 实际窥视的样本数量将不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。


int  av_audio_fifo_read (AVAudioFifo *af, void **data, int nb_samples)
从AVAudioFifo读取数据。

参数:af:从中读取的AVAudioFifo

   data:从中读取的AVAudioFifo

   nb_samples:要读取的样本数

返回:实际读取的样本数,或失败时为负的AVERROR代码。 实际读取的样本数量不会大于nb_samples,如果av_audio_fifo_size小于nb_samples,则它将仅小于nb_samples。


int  av_audio_fifo_drain (AVAudioFifo *af, int nb_samples)
从AVAudioFifo中排出数据。

删除数据而不读取它。

参数:af:排除的AVAudioFifo

   nb_samples:排出的样本数目

返回:如果OK,则为0,否则为ERROR代码


void  av_audio_fifo_reset (AVAudioFifo *af)
重置AVAudioFifo缓冲区。

这将清空缓冲区中的所有数据。

参数:af:重置的AVAudioFifo


int  av_audio_fifo_size (AVAudioFifo *af)
获取可用于阅读的AVAudioFifo中的当前样本数。

参数:af:进行查询的AVAudioFifo

返回:可用于读取的样本数


int  av_audio_fifo_space (AVAudioFifo *af)
获取AVAudioFifo当前可用于编写的样本数。

参数:af:进行查询的VAudioFifo

返回:可用于写入的样本数量



二、音频通道掩码

通道布局是一个64位整数,每个通道都有一个位设置。

设置的位数必须等于通道数。 值0表示通道布局未知。

注意:这种数据结构不够强大,无法处理具有相同通道多次的通道组合,例如双单声道。


#define  AV_CH_FRONT_LEFT   0x00000001
 
#define  AV_CH_FRONT_RIGHT   0x00000002
 
#define  AV_CH_FRONT_CENTER   0x00000004
 
#define  AV_CH_LOW_FREQUENCY   0x00000008
 
#define  AV_CH_BACK_LEFT   0x00000010
 
#define  AV_CH_BACK_RIGHT   0x00000020
 
#define  AV_CH_FRONT_LEFT_OF_CENTER   0x00000040
 
#define  AV_CH_FRONT_RIGHT_OF_CENTER   0x00000080
 
#define  AV_CH_BACK_CENTER   0x00000100
 
#define  AV_CH_SIDE_LEFT   0x00000200
 
#define  AV_CH_SIDE_RIGHT   0x00000400
 
#define  AV_CH_TOP_CENTER   0x00000800
 
#define  AV_CH_TOP_FRONT_LEFT   0x00001000
 
#define  AV_CH_TOP_FRONT_CENTER   0x00002000
 
#define  AV_CH_TOP_FRONT_RIGHT   0x00004000
 
#define  AV_CH_TOP_BACK_LEFT   0x00008000
 
#define  AV_CH_TOP_BACK_CENTER   0x00010000
 
#define  AV_CH_TOP_BACK_RIGHT   0x00020000
 
#define  AV_CH_STEREO_LEFT   0x20000000
立体声下混

#define  AV_CH_STEREO_RIGHT   0x40000000
见AV_CH_STEREO_LEFT。

#define  AV_CH_WIDE_LEFT   0x0000000080000000ULL
 
#define  AV_CH_WIDE_RIGHT   0x0000000100000000ULL
 
#define  AV_CH_SURROUND_DIRECT_LEFT   0x0000000200000000ULL
 
#define  AV_CH_SURROUND_DIRECT_RIGHT   0x0000000400000000ULL
 
#define  AV_CH_LOW_FREQUENCY_2   0x0000000800000000ULL
 
#define  AV_CH_LAYOUT_NATIVE   0x8000000000000000ULL
用于AVCodecContext.request_channel_layout的通道掩码值,用于指示用户请求解码器输出的通道顺序为本地编解码器通道顺序。

使用FFMPEG实现音频播放器 使用FFMPEG实现音频播放器导言因为公司项目的原因,要学习如何使用FFMPEG进行音频播放,折腾一圈发现,使用FFMPEG还真不是一件简单的事,更为可惜的是,当年在这方面的杰出人物—雷霄骅的英逝,这方面的文档愈发稀少,而FFMPEG相关代码不断更新,整理此文,算是对他的一种缅怀吧。FFMPEG简介 Q:FFMPEG是什么? A:FFMPEG是一个多媒体框架 Q:FFMPEG 阅读详情

相关推荐

ffmpeg源码简析(十一)libavformat,libavcodec,libavutil

libavformatavformat.h 文件 定义识别文件格式和媒体类型库使用的宏、数据结构和函数,通常这些宏、数据结构和函数在此模块内相 对全局有效allformat.c 文件 简单的注册/初始化函数,把相应的协议,文件格式,解码器等用相应的链表串起来便于查找。cutils.c 文件 文件格式分析模块使用的两个工具类函数,都是对字符串的操作。file.c 把 file 当做类似

WangShuo的专栏 2357

MPMoviePlayerController 电影播放器—IOS开发

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.youkuaiyun.com/iukey MPMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程URL初始化,而AVAudioPlayer则不...

mmdev 732

ffmpeg自学路(三)ffmpeg各项库说明,及build.sh的shell相关命令说明

一,ffmpeg各项库对应的功能说明

u014436704的专栏 981

一区即将要洗的DVD片子

101 Dalmatians [Animated] (2009, SE)《101斑点狗》预计2009年发行特别版12 Monkeys (05/10/2005, COM DOC)《12只猴子》预计2005年5月10日发行扩展版加评论和记录片等2001: A Space Odyssey (2006, SE)《2001:太空漫游》预计2006年发行特别版21 Grams (SE)《21克》特

现在的生活 521万+

【JCR一区级】非洲秃鹫算法AVOA-DBN轴承故障分类【含Matlab源码 5901期】

非洲秃鹫算法AVOA-DBN轴承故障分类 完整代码和数据,方可运行;数据可直接替换,适合小白!可提供运行操作视频!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 5903

【JCR一区级】非洲秃鹫算法AVOA-CNN-BiLSTM-Attention故障诊断分类预测【含Matlab源码 5436期】

非洲秃鹫算法AVOA-CNN-BiLSTM-Attention故障诊断分类预测 完整代码和数据,方可运行;数据可直接替换,适合小白!可提供运行操作视频!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 1504

FFMPEG学习【libavutil】:音频相关(三)

一、Audio sample formats 音频采样格式列举和相关便利功能。 一)、枚举 音频采样格式 1、由样本格式描述的数据始终是本机端序列。 样本值可以由本机C类型表示,因此即使是常见的原始音频数据格式,也缺少签名的24位采样格式。 2、浮点格式基于满量程范围[-1.0,1.0]。 超出该范围的任何值都超出了完整的音量。 3、在av_samples_fi

一世豁然的专栏 928

【BP分类】北方苍鹰算法优化BP神经网络NGO-BP故障识别数据分类【含Matlab源码 4983期】

北方苍鹰算法优化BP神经网络NGO-BP故障识别数据分类 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 1063

FFMPEG学习【libavutil】:音频相关(二)

一、Audio channel layouts 一)、宏 #define  AV_CH_LAYOUT_MONO   (AV_CH_FRONT_CENTER) #define  AV_CH_LAYOUT_STEREO   (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)

一世豁然的专栏 1695

FFmpeg学习 总体介绍

前言 前面文章学习ijk后,之后开始对FFmpeg进行学习。 FFmpeg是很优秀的音视频库,将会进行深入学习。本文介绍FFmpeg大概模块、结构体和基本使用,之后在遇到具体函数会对具体函数进行分析。 模块介绍 libavformat 该模块下实现了目前绝大多数媒体封装格式,包括封装和解封装,如MP4、FLV、TS等文件格式;RTMP、RTSP、HLS等网络协议封装格式。 FFmpeg可以在编译时按需选择要支持哪些封装格式。 另外也可以增加自己定制的封装格式,只需添加自己的封装处理模块muxer、dem

baiiu 721

LabVIEW与MySQL的连接:软件下载与安装至UDL文件创建全过程

依据个人经验编辑的十分完备的使用教程

tiaowudexiaoyu的博客 5574

FFMPEG Overview

1简述 ffmpeg,它是一个完整的跨平台方案,用于录制,转换和流式传输音频和视频。 使用也特别容易:ffmpeg -i input.mp4 output.avi。 2关于FFMPEG ffmpeg它是一款非常优秀的多媒体处理框架,能够编码,解码,转码,复用,解复用,网络流媒体下载,滤镜,播放等功能。 它包含六个模块: 1libavcodec,音视频解码/编码库. 2libavutil,简化编程,提供一些通用函数。 3 libavformat,复用/解复用库 4 libavfilter,多媒体滤镜库 5

陌上烟雨遥的博客 399

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

FFmpeg学习(三)-- libavutil 代码组成

FFmpeg libavutil

云梦居 3714

NCBI|叶绿体基因组数据上传

叶绿体基因组NCBI上传 小编最近在NCBI上传了好几次数据…想着可以把具体的上传步骤写下来,供大家参考。以下是叶绿体基因组的上传示例,大家可以瞅瞅 图片 准备工作 1.登录NCBI官网:https://www.ncbi.nlm.nih.gov/, 依次点击“sign in to NCBI”——“See more 3rd party sign in options”——搜索“Microsoft live.com”。 ”sign in to NCBI“ ”See more 3rd party sign i

weifanbio的博客 3901

数学建模入门——数据预处理(全)

介绍了数据预处理的入门知识

n04j04h06的博客 4347

FFmpeg 头文件完美翻译之 libavutil 模块

众所周知,FFmpeg 的代码开发上手难度较高,源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发,需要借助它的头文件,FFmpeg 把很多代码库教程都写在头文件里面。因此,熟读头文件的内容很重要,为此,我对 FFmpeg 6.x 版本的头文件进行了翻译,方便大家阅读理解。相信我,通读一遍头文件的注释后,你的 FFmpeg 的代码库开发技能将更上一层。本文适用于有 FFmpeg 代码库开发基础,但想深入熟练使用的同学。同时也可以参考我的Github 仓库。

Leon_Chenl的博客 963

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1436

FFmpeg 学习(一):FFmpeg 简介

它提供了录制、转换以及流化音视频的完整解决方案。如果您之前没有阅读FFmpeg代码的经验,建议优先阅读libavformat、libavcodec以及libavutil下面的代码,它们提供了音视频开发的最基本功能,应用范围也是最广的。链接:https://zhuanlan.zhihu.com/p/568800000。链接:https://zhuanlan.zhihu.com/p/568800000。商业转载请联系作者获得授权,非商业转载请注明出处。商业转载请联系作者获得授权,非商业转载请注明出处。

yinshipin007的博客 3764

【ARM CoreLink 系列 4.2 -- NI-700 Function units 详细介绍】

CoreLink NI-700的ASNI(AXI系统网络接口)完成者单元负责接收并处理来自AXI请求者设备的请求。这些单元将事务打包成根据NI-700通用传输(GT)协议的Flits,并将GT响应Flits解包成AXI响应。AXI与GT协议之间的请求、数据和响应事务的转换:确保AXI事务可以被NI-700网络正确处理,并将GT协议的响应正确转换回AXI响应。入站事务的突发拆分。

CodingCos的博客 1323

上线之前多一道闸:业务审核系统的接入定义、双轨状态机与可靠生效闭环

运营后台“保存即生效”,让价格、库存、人群等配置每次修改都相当于一次无评审的上线。本文以至尊会员降价活动为例,系统拆解业务审核系统:用带业务语义的操作编码、规则化审核人与候选人快照、完整的生效回调契约做好接入定义;把业务改造为提交待生效,以不可变快照、字段级差异和唯一约束加幂等号防误配防重复;用审批轨与执行轨双轨状态机、链路式重新提交和以事件为准的审核链路理清状态;最后以发件箱、幂等键、超时先查后试、乐观锁与对账闭合生效环节,并结合两个可运行的Java程序,给出五种生效策略的事故率实测对比。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

FFmpeg从入门到牛掰(六):音频转码讲解

转载请注明出处:https://blog.youkuaiyun.com/impingo 项目地址:https://github.com/im-pingo/pingos 音频转码讲解描述系列目录串讲 描述 本篇文章主要介绍ffmpeg中音频解码、重采样以及编码的API接口。前面的文章已经用三章分别介绍了在这过程中使用到的API函数,这篇文章将会把之前提到的API串起来讲解。 系列目录 FFmpeg从入门到牛掰(...

impingo的博客 1951

snmp MIB详解

每个 MIB 对象都由一个对象标识符(OID)和对象类型组成。OID 是一个由多个数字组成的路径(类似于 IP 地址),它标识了 MIB 中对象的层次结构。

dlz0836的博客 3722

FFMPEG 最全版本介绍及下载(一)

版本:ffmpeg-1.2;版本:ffmpeg-1.1;版本:ffmpeg-1.0 ;版本 ffmpeg-0.11;版本:ffmpeg-0.10;版本:ffmpeg-0.9;版本:ffmpeg-0.8;版本:ffmpeg-0.7; 版本:ffmpeg-0.6; 版本:ffmpeg-0.5;

seniorwizard的专栏 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python安装ffmpeg包操作方法

步骤1. Anaconada 环境 步骤2. 以下两者方法均失败的情况下用步骤3 pip install FFmpeg conda install FFmpeg 步骤3. 采用镜像方式安装 conda install -c https://conda.anaconda.org/menpo ffmpeg 步骤4. 安装conda-forge conda-forge是编译的f...

5792

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

ffmpeg库简介

ffmpeg下有7个library,分别是: libavutil libswscale libswresample libavcodec libavformat libavdevice libavfilter libavutil:(通用工具库) libavutil十一个实用的工具库用于辅助可移植的多媒体编程。它包含安全的可移植的字符串函数,随机数生成器,数据结构,附加的数学函数,密码学和多媒体相关功能(例如像素和样本格式的枚举)。它不是 libavcodec 和 libavformat 都需要的代码库

依依妖妖的林少的博客 2681
上一篇: FFMPEG学习【libavutil】:视频相关
下一篇: FFMPEG学习【libavutil】:音频相关(二)
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值