没有合适的资源?快使用搜索试试~ 我知道了~
Opus_低延迟音频编解码器API手册中文翻译
5星 · 超过95%的资源 需积分: 10 48 下载量 31 浏览量
2015-01-20
14:23:05
上传
评论 1
收藏 424KB DOC 举报
温馨提示
试读
64页
Opus_低延迟音频编解码器API手册中文翻译,Opus_低延迟音频编解码器API手册中文翻译
资源推荐
资源详情
资源评论
Opus:IETF 低延迟音频编解码器:API 和操
作手册
Opus 简介
编解码器是专门设计用于互联网的交互式语音和音频传输。它是由
的编解码器工作组设计的,合并了 的 和 的 技术。
编解码器的设计目的是处理广泛的交互式音频应用程序 包括 语音
视频游戏内聊天甚至远程现场音乐表演。它可以适用于从低码率窄带语音到非
常高质量的立体声音乐。它的主要特点是
采样率从 8 至 48 kHz
比特率从 6kb/s 到 510kb/s
对固定码率(CBR)和可变码率(VBR)都能支持
从窄带到宽带的音频带宽
支持语音和音乐
支持单声道和立体声
支持多通道(最多 255 通道)
帧规格从 2.5 毫秒到 60 毫秒
良好的损失鲁棒性和包丢失隐藏性(PLC)(注:应是指丢包也不容易被
发现)
浮点和定点执行
文档包括:
Opus Encoder
Opus Decoder
Repacketizer
Opus Multistream API
Opus library information functions
Opus Custom
Opus Encoder
本节描述了 编码器 的过程和函数
类型定义
状态
函数
!!!"#$%&
获得OpusEncoder 结构的大小
'
!!$ #!() $%$%$*
'&
分配和初始化 状态
!! # ' !() $%
$%$*&
初始化一个以前分配的编码器状态。所指向的内存圣必须至少是
!!!"#&返回的大小
!() !#'!+', $,!"
$'$$!(),$-!$$!.&
对一个 帧进行编码
!() !!/$# '/$', $,!"
$'$$!(),$-!$$!.&
根据浮点输入对一个 帧进行编码
0 !!#'&
释放一个根据 !!$#&已分配的 OpusEncoder 对
象。
!!%#'1&
)
向一个 编码器执行一个函数
详细描述
本节描述了用于编码 的过程和函数。
既然 是一个有状态的编解码器,编码过程始于创建一个编码器状态,
用以下方法做到:
int error;
OpusEncoder *enc;
enc = opus_encoder_create(Fs, channels, application, &error);
从这一点上 可以用于编码音频流。一个编码器状态在同一时间不得用
于多于一个音频流。同样编码器状态不能对于每帧重新初始化。
当 !!$#&为状态分配内存时,它也可以初始化预分配的内存:
int size;
int error;
OpusEncoder *enc;
size = opus_encoder_get_size(channels);
enc = malloc(size);
error = opus_encoder_init(enc, Fs, channels, application);
!!!"#&返回编码器状态要求的大小。注意这段代码的未来版
本可能改变大小所以没有 $* 应该对它做出。
编码器状态在内存中总是连续复制它只要一个浅拷贝就足够了。
使用 !!%#&接口可以改变一些编码器的参数设置。所有这些参数
都已有缺省值,所以只在必要的情况下改变它们。最常见的参数设置修改是:
opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate));
opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity));
opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type));
在这里:
bitrate(比特率)的单位是比特/秒(b / s)
complexity(复杂性)是一个值从 1 到 10,1 最低,10 最高,值越大
越复杂
signal_type(信号的类型)包括 2!32#缺省&2!453!6
2!453!72。
(
看 %$和4
可以获得可设置和查询的参数详细清单。在一
个音频流处理过程中,大多数参数可以设置或修改。
为了对一个帧进行编码,必须正确地用音频数据的帧#)889)9:9或 +9毫
秒&来调用 !#&或 !!/$#&函数。
len = opus_encode(enc, audio_frame, frame_size, packet,
max_packet);
在这里:
$! $,(音频帧)是 opus_int16(或用于 !!/$#&的浮点)
格式的音频数据
frame_size(帧大小)是样本中帧的最大数(每个通道)
packet(包)是写成压缩数据的字节数组,
max_packet 是可以写入包的字节数的最大值推荐(4000 字节)。不要
使用 max_packet 控制 VBR 的目标比特率,而应该用 2!!;<3
。
!#&和 !!/$#&返回实际写入包的字节数。返回值可以是
负数这表明一个错误已经发生。如果返回值是 个字节那么包不需要传播
#=&。
一旦一个编码器状态已不再需要,可以用以下方式解构:
!!#&>
如 果 编 码 器 是 用 !!#& 创 建 的 , 而 不 是 使 用
!!$#&函数,那么不需要采取行动,要求从潜在的释放为它手动
分配的内存#上述例子是调用 #&&中分离。
类型定义文档
Opus 编码器状态。
这包含了一个 Opus 编码器的完整状态。它是位置独立的,并且可以自由复制。
:
函数文档
!()!# '
!+' ,
$,!"
$' $$
!() ,$-!$$!.
&
对一个 帧进行编码。
参数:
?@ '编码器状态
?@ ,!+' 输 入 信 号 # 如 果 是 ) 通 道 有 交 叉 & 长 度 是
$,!"'$%'" #!+&
?@ $,!" 输入信号的每通道样本数 这必须是编码器采样率的
帧大小。比如,:AB"下允许值有 )9):9:A9C+9C)9和)AA9。少于
9 毫秒的采样(:AB"有 :A9 个样本), 将阻止编码器使用 或混合模式。
?@ $$ $'输出负载。必须包含至少 ,$-!$$!.的
容量。
?@ ,$-!$$!. !()为输出负载所分配的内存大小。可以用于限
制 固 定 比 特 率 的 最 大 上 限 , 但 不 能 用 作 唯 一 的 比 特 率 限 制 , 可 以 用
2!!;<3
来控制比特率。
返回值:成功,是被编码包的长度(字节数),失败,一个负的错误代码
!()!!/$ # '
/$' ,
$,!"
$' $$
!() ,$-!$$!.
&
根据浮点输入对一个 帧进行编码
参数:
8
剩余63页未读,继续阅读
资源评论
- Tyou_Sann2016-04-20不错~感谢分享~
- twxyz1232016-01-22正在研究opus,谢谢分享
- jiayong_20122016-01-08翻译的不错,正需要呢。
老衲不出家
- 粉丝: 653
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功