- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试用 AKPlayer 替换我的代码中的 AKAudioPlayer,这是由于一个单独的问题,即 AKAudioPlayer 的播放头在暂停后给出负数并且不更新。然而,在这个切换之后,我遇到了一个单独的问题,即 AKPlayer 根本不加载我的 AKAudioFIle。这是我的代码的一个简单版本:
import UIKit
import AudioKit
import AudioKitUI
class ViewController: UIViewController
{
var microphone : AKMicrophone!
var mixer : AKMixer!
var waveformBooster: AKBooster!
var outputBooster : AKBooster!
var exportTape : AKAudioFile!
var recorder : AKNodeRecorder!
var player : AKPlayer!
var recordingTimer : Timer!
var playTimer : Timer!
@IBOutlet var startRecordingButton: CircularButton!
@IBOutlet var playAndPauseRecordingButton: UIButton!
override func viewDidLoad()
{
super.viewDidLoad()
microphone = AKMicrophone()
mixer = AKMixer(microphone)
AudioKit.output = mixer
try!AudioKit.start()
// Initialise file to store recorder output and set recorder to route mixer
// output to file
exportTape = try! AKAudioFile(name: "ExportTape")
recorder = try! AKNodeRecorder(node: mixer, file: exportTape)
// Create player with blank tape so that we have a reference player object
player = AKPlayer(audioFile: exportTape)
}
@IBAction func startRecording(_ sender: UIButton)
{
if player.isPlaying == false
{
// Delete contents of output file so it can be rewritten
try! recorder.reset()
microphone.start()
do
{
try recorder?.record()
} catch
{
AKLog("Couldn't record")
}
}
}
@IBAction func stopRecording(_ sender: UIButton)
{
microphone.stop()
recorder.stop()
}
@IBAction func playAndPauseRecording(_ sender: UIButton)
{
// Replace the empty or previous tape with the newly recorded one
//player.load(audioFile: exportTape) <-- This doesn't work either
var player = AKPlayer(audioFile: exportTape)
// TEST
print("CurrentTime \(player.currentTime)")
print("StartTime \(player.startTime)")
print("EndTime \(player.endTime)")
print("Duration \(player.duration)")
print("isPlaying \(player.isPlaying)")
// END TEST
// If something has been recorded...
if player.duration > 0
{
// If the player is currently playing...
if player.isPlaying == true
{
// ...and pause the tape
player.pause()
} else
{
AudioKit.output = player
player.play()
print("Playing...")
//player.resume()
}
}
}
}
无论是使用 .load() 方法还是创建一个新的播放器实例都不适合我——输出如下:
CurrentTime nan
StartTime 0.0
EndTime 0.0
Duration 0.0
isPlaying false
奇怪地跟着
AKPlayer.swift:deinit:918:* deinit AKPlayer
这是否意味着 AKPlayer 正在测试打印语句后取消初始化?
需要明确的是,当文件是 AKAudioPlayer 时,它会正确地加载到播放器中,只是现在我将它更改为 AKPlayer,文件才不会加载。有人知道为什么吗?任何帮助将不胜感激。
编辑:
这是一段更短更简单的代码,但仍然显示错误:
import UIKit
import AudioKit
class ViewController: UIViewController
{
var file : AKAudioFile!
var player : AKPlayer!
var audioPlayer : AKAudioPlayer!
var microphone : AKMicrophone!
var mixer : AKMixer!
var recorder : AKNodeRecorder!
var booster : AKBooster!
@IBOutlet var startRecordingButton: UIButton!
@IBOutlet var stopRecordingButton: UIButton!
@IBOutlet var playRecordingButton: UIButton!
override func viewDidLoad()
{
super.viewDidLoad()
microphone = AKMicrophone()
mixer = AKMixer(microphone)
booster = AKBooster(mixer)
booster.gain = 0
AudioKit.output = booster
try!AudioKit.start()
file = try! AKAudioFile(name: "file")
recorder = try! AKNodeRecorder(node: mixer, file: file)
}
@IBAction func startRecording(_ sender: UIButton)
{
microphone.start()
print("Recording...")
do
{
try recorder?.record()
} catch
{
AKLog("Couldn't record")
}
}
@IBAction func stopRecording(_ sender: UIButton)
{
microphone.stop()
recorder.stop()
print("Recording Stopped")
}
@IBAction func playRecording(_ sender: UIButton)
{
audioPlayer = try! AKAudioPlayer(file: file)
player = AKPlayer(audioFile: file)
AudioKit.output = player
player.play()
// v this works! v
// AudioKit.output = audioPlayer
// audioPlayer.play()
}
}
最佳答案
这已在即将发布的错误修复中得到解决。问题是 AKPlayer 假设传入的 AKAudioFile 是为读取打开的,而 AKMicrophone 的关联文件是为写入打开的。
AKAudioPlayer 创建了一个重复的文件对象,这就是它在那里工作的原因。应该很快更新!
关于ios - AudioKit:AKPlayer 根本不加载 AKAudioFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53730646/
我正在尝试使用 AKAudioFile.exportAsynchronously 将 wav 转换为 m4a(基于此处的示例代码:https://audiokit.io/playgrounds/Pla
我只是想播放一个音频文件。我试图以与 audiokit playgrounds 相同的方式设置它,但我似乎缺少如何指定 AKAudiofile 的基本目录。我需要知道如何将文件正确链接到我的代码。 我
我一直在尝试用 AKPlayer 替换我的代码中的 AKAudioPlayer,这是由于一个单独的问题,即 AKAudioPlayer 的播放头在暂停后给出负数并且不更新。然而,在这个切换之后,我遇到
给定一个从 AKNodeRecorder 创建的单个 AKAudioFile,其中包含一系列口语单词,其中每个单词至少间隔 1 秒,最终创建一系列文件且每个文件包含一个单词的最佳方法是什么? 我相信,
我的应用是适用于 macOS 的音频播放器,使用 AVAudioEngine 框架以 Swift 3 编写。 现在,我正在尝试利用 AudioKit 框架而不是直接使用 AVAudioEngine,因
我正在尝试在一个简单的 iOS 项目上使用 AKSampler 来加载文件并在点击设备屏幕时播放它。 我对 AKSamplePlayer 执行了相同的步骤并且工作正常,但我更愿意使用 AKSample
无法弄清楚如何为此类方法选择另一个输出目录: 异步提取,异步导出,反向异步 这可能吗? 一个应用程序会产生大量的临时文件,我只想为所有临时文件创建单独的目录并在工作完成后清理它。 最佳答案 所有这些都
我是一名优秀的程序员,十分优秀!