Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用AVAudioTimePitchAlgorithmSpectral?

如何使用AVAudioTimePitchAlgorithmSpectral?
EN

Stack Overflow用户
提问于 2014-05-27 16:04:10
回答 3查看 2K关注 0票数 1

我的应用程序包括一个音频播放器,它使用AVAudio播放来自iPod音乐库的音频文件。我想添加一个音高转换功能到播放器,而我看过的音高转换库需要使用不同的音频框架来编写一个新播放器。

我目前正在使用一个AVAudioMix来改变播放器中的音量,我注意到音频输入参数之一是audioTimePitchAlgorithm,它有一个常量的AVAudioTimePitchAlgorithmSpectral,看起来就像我所需要的那样。文件显示,它支持从1/32到32之间的可变比率。但我不知道该怎么确定这个比率。

下面是我到目前为止(基于这就是答案)的代码,并指出了丢失的部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AVPlayer *player = self.audioPlayer;
NSArray *audioTracks = [player.currentItem.asset tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVAssetTrack *track in audioTracks) {
    AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
    audioInputParams.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmSpectral;
    audioInputParams.audioTimePitchRate = 0.5; <-- NEED SOMETHING LIKE THIS
    audioInputParams.trackID = [track trackID];
    [allAudioParams addObject:audioInputParams];
}
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:allAudioParams];
[player.currentItem setAudioMix:audioMix];

我搜索过Google、dev论坛、AVFoundation编程指南和框架头文件,但没有找到更多的相关信息。有人知道这是怎么回事吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-27 16:32:21

恐怕你误解了文件(因为臭名昭著的“希望之泉永恒”效应)。AVAudioTimePitchAlgorithmSpectral的意思仅仅是“当你保持音高的变化率,做一个真正好的工作,当这是音乐”。在改变速度的同时保持音高有两种算法--一种更好的声音,一种更好的音乐。意思是“使用音乐一”。这并不意味着“改变音高而不改变速度”,这显然是你所追求的。AFAICT不提供任何内置的Cocoa触摸框架。

票数 0
EN

Stack Overflow用户

发布于 2015-08-04 08:16:59

对于AVPlayer:

在播放机项目上设置audioTimePitchAlgorithm并调整播放机比率。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
player.playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmSpectral;

现在改变你的球员率将调整音频音高。

这也适用于AVAssetExportSession

缩放音频到一个新的持续时间和音频将保留原来的音高。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myAVAssetExportSession.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmSpectral; // (AVAssetExportSession's default algorithm)
票数 0
EN

Stack Overflow用户

发布于 2015-11-23 23:12:56

事实上,我认为你想要看的是AVAudioTimePitchAlgorithmVarispeed,它会改变球场。

正如AV基础音频设置常数中在节时间基音算法设置下提到的那样

高质量,没有音高校正。音高随速度变化。变化率从1/32到32。

而且,你只需要做这样的事情

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url];
playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmVarispeed;
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
[player play];

这篇文章中所引用的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23900894

复制
相关文章
tcpdump如何使用
Tcpdump command is a famous network packet analyzing tool that is used to display TCP IP & other network packets being transmitted over the network attached to the system on which tcpdump has been installed. Tcpdump uses libpcap library to capture the network packets & is available on almost all Linux/Unix flavors.
用户8418197
2021/09/11
5.7K0
如何使用 babel
Babel 用于将 ES6 的代码转化为 ES5,使得 ES6 可以在目前的浏览器环境下使用。学习使用 babel 是为了使用 ES2015 做准备。本文将介绍如何使用 babel,以及一些相关的配置。
零式的天空
2022/03/28
2.2K0
makefile 如何 使用
上面的Makefile文件就是要编译出一个firstTest的可执行文件,逐句分析:
用户8418197
2021/08/29
2.5K0
如何使用Grep
Grep是一个命令行实用程序,可以使用常见的正则表达式语法搜索和过滤文本。它无处不在,动词“to grep”已经成为“搜索”的同义词。它grep是一个有用的工具,用于在选择的文件中查找所有出现的搜索词,过滤日志文件或流,或作为一部分脚本或命令链。
独木桥先生
2018/08/20
2.5K0
如何使用接口
接口的概念及定义     接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。     接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 如何使用接口         现在要求实现防盗门的功能,门具有防盗功能,门有开和关的功能,锁有上锁和开锁的功能,     假如我们把门和锁都定义为抽象类,这个时间防盗门,可以继承门又同时继承的锁吗?这个要回顾     一下我们之前讲的继承的特点,继承的两个特点,一是单根性,二是传递性,继承的单根性呢,就     决定了一个类只能有一个父类,他不能同时去继承两个父类,这种情况下,我们就没有办法用继承     去实现防盗门的功能,那么,如何解决这个问题呢?         我们可以把门定义为抽象类,把锁,定义为接口,这个时间呢,我们防盗门,既可以继承门,     同时又实现锁的接口,就解决了多继承的问题。  什么是接口 - 如何定义接口?
魏铁锤
2022/10/27
2.6K0
如何使用接口
如何使用 ArrayPool
如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。
newbe36524
2023/02/18
5.1K0
如何使用 ArrayPool
如何使用CompletableFuture
CompletableFuture 是Java 8中的一个很重要的类,它是一个实现了 Future 接口的异步处理类,可以帮助我们更加方便地执行异步任务和处理异步任务的结果。 CompletableFuture 的底层实现是基于 Fork/Join 框架和 ConcurrentLinkedQueue ,在Java 8中, CompletableFuture 是在 java.util.concurrent 包下。
贪挽懒月
2023/10/16
2220
如何使用tcpdump
Tcpdump is a CLI tool to capture raw network packets. This is useful for various forms of network troubleshooting. This cheat sheet covers all the basic and advanced options for tcpdump.
用户8418197
2022/01/11
5.9K0
如何使用bcftools
当然了,如何提问,就需要一点点背景知识啦, 比如知道什么是变异位点,什么是过滤,然后就可以很简单的两个提问即可:
生信技能树
2023/09/19
1.5K0
如何使用bcftools
WebWorker如何使用?
Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面。
CherishTheYouth
2020/12/18
3K0
WebWorker如何使用?
如何使用RSS
一、 自从我发现很多人不知道什么是RSS以后,我就一直想向大家介绍它,因为它太有用了,将来会和电子邮件一样重要。不懂得RSS,上网的效率和乐趣都要大打折扣。 我在网上找不到简明易懂的介绍文章,只好
ruanyf
2018/04/12
2.9K0
如何使用RSS
如何使用接口
接口的概念及定义 接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。 接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 复制代码 如何使用接口 现在要求实现防盗门的功能,门具有防盗功能,门有开和关的功能,锁有上锁和开锁的功能, 假如我们把门和锁都定义为抽象类,这个时间防盗门,可以继承门又同时继承的锁吗?这个要回顾 一下我们之前讲的继承的特点,继承的两个特点,一是单根性,二是传递性,继承的单根性呢,就 决定了一个类只能有一个父类
用户10094878
2022/11/21
2.3K0
如何使用接口
如何使用 ArrayPool
如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。
newbe36524
2023/08/23
2601
安全模式要如何使用?使用后要如何退出
安全模式是电脑系统的一种操作模式,可以在系统出现错误的时候开启安全模式,从而使得一些程序停止运行,之后就可以查找到系统的错误根源,从而进行解决。所以安全模式在一定程度上确保了电脑的运行安全,避免因为各种程序的运行导致电脑出现更多的问题,或者说阻碍系统的修复。当然,如果问题解决的话,也就可以退出安全模式,从而让电脑恢复正常运行状态。那么安全模式要如何使用?使用之后应该如何退出呢?
用户8739405
2021/06/17
3.2K0
apifox的使用_api如何使用
Apifox 是接口管理、开发、测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发、后端开发和测试人员。
全栈程序员站长
2022/09/19
5.2K0
apifox的使用_api如何使用
如何正确使用log
下面小编就为大家分享一篇使用log_format为Nginx服务器设置更详细的日志格式方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
习惯说一说
2019/07/04
2.3K0
如何高效使用 ChatGPT?
最近,ChatGPT 非常火。如果你刷社交媒体,大概已经被各种消息搞得头晕脑胀。从大佬到普通人,都对这个话题表现出浓厚的兴趣。就连 ChatGPT 为主题的学术研讨会通知,我都已经收到 3 份了。
王树义
2023/02/28
1.9K0
如何高效使用 ChatGPT?
MyBatis(如何使用MyBatis)
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
全栈开发日记
2022/05/13
4320
如何有效使用 GitHub
GitHub 是很多「modern」程序员使用频度很高的网站,但各人从中汲取的养分不同。有的人借助它的力量扬名立万成为一代大神;有的人迷失其中,天天在其中流连却成长有限。
零式的天空
2022/03/28
3650
如何使用直播审核
近些年来,随着视频直播的快速发展,越来越多的人开始参与到直播当中来,生怕自己错过直播带来的红利浪潮。但是随着越来越多的平台进来,竞争的加剧,使得没有流量没有资本的平台扛不住压力而倒闭,而有的为了铤而走险,以色情炒作吸引眼球。正是直播的这种风气盛行给直播内容的监管带来了巨大的挑战。那么在国家对于直播内容监管的要求日益严格下,我们如何才能节省更多的人力成本以及资金成本去对我们的内容监管而不像下图进行大规模的人工审核呢?
高峰-pfgao
2020/12/18
5.2K0
如何使用直播审核

相似问题

如何使用AngularJS使用

16

如何使用mySQL使用

43

如何使用使用Eclipse

11

如何使用使用ImageLoad

12

如何使用Python使用

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文