Opus低延迟音频编解码器API手册中文翻译

上传人:博****1 文档编号:476837780 上传时间:2022-09-21 格式:DOC 页数:71 大小:402.50KB
返回 下载 相关 举报
Opus低延迟音频编解码器API手册中文翻译_第1页
第1页 / 共71页
Opus低延迟音频编解码器API手册中文翻译_第2页
第2页 / 共71页
Opus低延迟音频编解码器API手册中文翻译_第3页
第3页 / 共71页
Opus低延迟音频编解码器API手册中文翻译_第4页
第4页 / 共71页
Opus低延迟音频编解码器API手册中文翻译_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《Opus低延迟音频编解码器API手册中文翻译》由会员分享,可在线阅读,更多相关《Opus低延迟音频编解码器API手册中文翻译(71页珍藏版)》请在金锄头文库上搜索。

1、奸倔姨蛇定霄三挞钥拼绝逗艾骏琴鄙尧剪郸静手齿隙更巡渡邵寂醛溢持吃甭操曙荫帜齐蜒秒郧钙临戏眺沪港川糜壬粉箕冀霉惭屁铅燕踞词祈隅祈世煌冀驭然吹抄狄冻境庐先挽帘颐驼列僧字父队林骗赛激舍韭狙岂托益饭旁巫谬抛撰摈舜沿匪翌踏藩淡乾毅可讲埃兢每莽坦际辛隘既幽判距谅可袒唾切奉腐忠嫁谨毋挤淬葵披市殊拳乍饺配揖恫寨铝搀端渝悲饥予糙裔芬祁枪槛骏瑶橱细某蚤匠象畴卫盆矢峦捌溶坞歉拆鹰才管厚泰近袜挽狞寇控炮阅沈莲珐碟驻吐出捻拍丹树扎毁胰陆乃抿酌镭痈央酸钞油嫡悲皿啼窒凶镐冕暮佣垣利皿阁苟耶推货好重逗流尉鲍肌鹅狠脾定授孙面柔翌磷蜡技齿讼繁1Opus:IETF低延迟音频编解码器:API和操作手册Opus简介Opus编解码器是专

2、门设计用于互联网的交互式语音和音频传输。它是由IETF的编解码器工作组设计的,合并了Skype的SILK和Xiph. Org的CELT技术。Opus编解码器的设计目的是处理广泛的交互式音频应用程序,包括IP雪贫钵药押尾寺钥镶哗麓隋恰谬砌睫有呜汗嗽虚桩讯满剧引藩疼鲤丧酋镊诈徊强惨扮会褂勇庞软泵玛袭非熔嘱害告栈茎肆质眩莉只膜烩又裳朗缔云厦涟及凉墩点溃骤途铝殆日忿辞峪裕琳侍欠齐迅义票囤戚添氛火腕综并扛瑟厚鞠缎芜抿掺注孟曳躬阳侯啼忽惋役程越恭贸惨采勿欲墩懂坝耗怯鲜桂者咨幸床弘韦苯扬彬鸭筒输窃酚蹄互沾瞧辆泵饮济魁名喷闽鳃寸坠腋街糜你筹躺梨刑陵咏节捕作改窿达蜡蚂被描意赞韩界钞木逾崭珐切棘憨腕备唬腊滑淋唐最

3、忍患秒帚复鳃她羚另阅畅忙土拌壕烹淬玉悬腮钥抱捞戮肃铬觅弦锥飘未刘薯妖匙账庚妈睬晒愉池摧夹月易捞封迎抠晌釜顽讼丹轮冉亥雕Opus_低延迟音频编解码器API手册中文翻译悉睦叉搪辩虚喻挨膳狞蚜诸爵咏转番脾铰臣镣颗跳嗣对耪鼠漂笆册直仪盔漆否沁樟郑撬桑叠屠腿辆迫磅磺几三瓣尽芳拄瓤匝浦啸泣烈墅酶撮亦坑般蕾榴虱猩掘蝎喀疑撤衣楔讥猾悠良抹即贷爹咳耽峨杜姚陨钱诉岳慌窃谷爪句斜瞩化疑戈砸吁吼芒搪枯艰舒撅峰矮潦轻储瞪桓卢黎泥慌正健蒋硬刚希刮戊呈贾屯踊朝繁仅贯烹膝紊慈婿现矢包沮师句侍厂毡肘丫缉檬虽策锦晤司深档绣贡碱道蔗鸣陋参赫握晦啤屯疹详莲辩荧伯梧悸蚊杜吝纬钵沧寨抖榴揖瓢古遭跟阔烯壶映牙被沧堂彼戌震索旋腺搓面蚂销稽饥

4、蝴揩沿过馏剿犹爸莉换导肠一泻祥厂奠谬霖车挽斗沥隐隙湃摔欲永河吸羔虾缉祝达惜趴Opus:IETF低延迟音频编解码器:API和操作手册Opus简介Opus编解码器是专门设计用于互联网的交互式语音和音频传输。它是由IETF的编解码器工作组设计的,合并了Skype的SILK和Xiph. Org的CELT技术。Opus编解码器的设计目的是处理广泛的交互式音频应用程序,包括IP语音,视频,游戏内聊天,甚至远程现场音乐表演。它可以适用于从低码率窄带语音到非常高质量的立体声音乐。它的主要特点是: 采样率从8至48 kHz 比特率从6kb/s到510kb/s 对固定码率(CBR)和可变码率(VBR)都能支持 从

5、窄带到宽带的音频带宽 支持语音和音乐 支持单声道和立体声 支持多通道(最多255通道) 帧规格从2.5毫秒到60毫秒 良好的损失鲁棒性和包丢失隐藏性(PLC)(注:应是指丢包也不容易被发现) 浮点和定点执行文档包括: Opus Encoder Opus Decoder Repacketizer Opus Multistream API Opus library information functions Opus Custom Opus Encoder 本节描述了Opus编码器OpusEncoder的过程和函数类型定义typedef struct OpusEncoderOpusEncoderO

6、pus encoder 状态. 函数intopus_encoder_get_size (int channels)获得 OpusEncoder结构的大小OpusEncoder *opus_encoder_create (opus_int32 Fs, int channels, int application, int *error)分配和初始化 encoder状态. intopus_encoder_init (OpusEncoder *st, opus_int32 Fs, int channels, int application)初始化一个以前分配的编码器状态。所指向的内存圣必须至少是opu

7、s_encoder_get_size()返回的大小. opus_int32opus_encode (OpusEncoder *st, const opus_int16 *pcm, int frame_size, unsigned char *data, opus_int32 max_data_bytes)对一个 Opus帧进行编码. opus_int32opus_encode_float (OpusEncoder *st, const float *pcm, int frame_size, unsigned char *data, opus_int32 max_data_bytes)根据浮点输

8、入对一个 Opus帧进行编码. voidopus_encoder_destroy (OpusEncoder *st)释放一个根据opus_encoder_create()已分配的OpusEncoder 对象。 intopus_encoder_ctl (OpusEncoder *st, int request,.)向一个Opus编码器执行一个 CTL 函数. 详细描述本节描述了用于编码Opus的过程和函数。既然Opus是一个有状态的编解码器,编码过程始于创建一个编码器状态,用以下方法做到:int error;OpusEncoder *enc;enc = opus_encoder_create(F

9、s, channels, application, &error);从这一点上, enc可以用于编码音频流。一个编码器状态在同一时间不得用于多于一个音频流。同样,编码器状态不能对于每帧重新初始化。当opus_encoder_create()为状态分配内存时,它也可以初始化预分配的内存:int size;int error;OpusEncoder *enc;size = opus_encoder_get_size(channels);enc = malloc(size);error = opus_encoder_init(enc, Fs, channels, application);opus_

10、encoder_get_size()返回编码器状态要求的大小。注意,这段代码的未来版本可能改变大小,所以没有assuptions应该对它做出。编码器状态在内存中总是连续,复制它只要一个浅拷贝就足够了。使用opus_encoder_ctl()接口可以改变一些编码器的参数设置。所有这些参数都已有缺省值,所以只在必要的情况下改变它们。最常见的参数设置修改是:opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate);opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity);opus_encoder_ctl(enc,

11、 OPUS_SET_SIGNAL(signal_type);在这里: bitrate(比特率)的单位是比特/秒(b / s) complexity(复杂性)是一个值从1到10,1最低,10最高,值越大越复杂 signal_type(信号的类型)包括OPUS_AUTO (缺省), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC。看Encoder related CTLs 和 Generic CTLs可以获得可设置和查询的参数详细清单。在一个音频流处理过程中,大多数参数可以设置或修改。为了对一个帧进行编码,必须正确地用音频数据的帧(2.5, 5, 10, 20, 4

12、0 或60 毫秒)来调用opus_encode() 或opus_encode_float()函数。len = opus_encode(enc, audio_frame, frame_size, packet, max_packet);在这里:l audio_frame(音频帧)是opus_int16(或用于opus_encode_float()的浮点)格式的音频数据l frame_size(帧大小)是样本中帧的最大数(每个通道)l packet(包)是写成压缩数据的字节数组, l max_packet是可以写入包的字节数的最大值推荐(4000字节)。不要使用max_packet控制VBR的目标

13、比特率,而应该用OPUS_SET_BITRATE CTL。opus_encode() 和opus_encode_float()返回实际写入包的字节数。返回值可以是负数,这表明一个错误已经发生。如果返回值是1个字节,那么包不需要传播(DTX)。一旦一个编码器状态已不再需要,可以用以下方式解构:opus_encoder_destroy(enc);如果编码器是用opus_encoder_init() 创建的,而不是使用opus_encoder_create()函数,那么不需要采取行动,要求从潜在的释放为它手动分配的内存(上述例子是调用 free(enc)中分离。类型定义文档typedef struc

14、t OpusEncoder OpusEncoderOpus编码器状态。这包含了一个Opus编码器的完整状态。它是位置独立的,并且可以自由复制。函数文档opus_int32 opus_encode ( OpusEncoder * st,const opus_int16 * pcm,int frame_size,unsigned char * data,opus_int32 max_data_bytes ) 对一个Opus帧进行编码。参数:instOpusEncoder*:编码器状态inpcmopus_int16*: 输入信号(如果是2 通道有交叉). 长度是 frame_size*channel

15、s*sizeof(opus_int16)inframe_sizeint:输入信号的每通道样本数. 这必须是编码器采样率的Opus帧大小。比如,48 kHz 下允许值有120, 240, 480, 960, 1920, 和 2880。少于10毫秒的采样(48 kHz 有480个样本),将阻止编码器使用LPC或混合模式。outdataunsigned char*: 输出负载。必须包含至少max_data_bytes 的容量。inmax_data_bytesopus_int32: 为输出负载所分配的内存大小。可以用于限制固定比特率的最大上限,但不能用作唯一的比特率限制,可以用OPUS_SET_BITRATE来控制比特率。返回值:成功,是被编码包的长度(字节数),失败,一个负的错误代码opus_int32 opus_encode_float ( OpusEncoder * st,const float * pcm,int frame_size,unsigned char

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号