根据Apple的描述,aurioTouch示例应用程序假设"获取音频输入并将其复制到输出",我认为这意味着应用程序将播放/通过iPhone的麦克风通过iPhone扬声器拾取的任何声音.
然而,当我将应用程序加载到我的iPhone(更新到2.2)时,playthru功能似乎根本不起作用.屏幕上的示波器按预期响应声音和声音,因此应用程序的音频输入一半显然正常工作.
是的,我尝试切换应用程序的"MUTE"按钮,是的,我确保iPhone的"振铃/静音"开关未设置为静音,并且音量未设置为零.我错过了什么?
我目前正在开发一个iOS开发项目.为方便起见,我在早期阶段将功能分成几个小程序.该项目包括Obj-C,Obj-C++和C++程序.现在我将它们放在最终产品中,并且在(我猜)Obj-C和C++之间的兼容性方面遇到了一些奇怪的行为.
我试图在一个obj-C++程序中初始化一个对象,它来自一个obj-C类.但是在编译obj-C类头文件时我不断收到错误:
#import <Foundation/Foundation.h>
@class AVAssetExportSession;
@interface LibraryImport : NSObject {
AVAssetExportSession * export; //Error line
NSError* movieFileErr;
}
//class methods
Run Code Online (Sandbox Code Playgroud)
成绩单是这样的:
LibraryImport.h:24:错误:'export'之前的预期unqualified-id
LibraryImport.h:24:错误:实例变量'unnamed'的大小未知
LibraryImport.h:24:错误:预期`;' 在'出口'之前
这个调用在obj-C++文件中是这样的:(这里没有检测到错误,只是觉得有些东西可能相关)
LibraryImport* import = [[LibraryImport alloc] init];
Run Code Online (Sandbox Code Playgroud)
最奇怪的部分是,当它最初由一个纯粹的Obj-C程序调用时,它的工作非常好.但项目性质需要将调用者更改为obj-C++.而且,当我尝试将obj-C文件更改为obj-C++时,我得到的错误比以前更多,包括现有错误.
以下是让我在过去整整一周内撞墙的问题:
在这种情况下,我如何成功初始化此对象?
这个问题是否与obj-C和C++之间的兼容性有关?如果是这样,有兼容性的一般解决方案或一些明确的解释吗?
如果需要更多信息,请告诉我(这是我第一次遇到这个问题,我甚至不知道从哪里开始......).任何见解将不胜感激.非常感谢你 :-)
干杯,
曼卡
我正在尝试使用远程IO连接并通过内置过滤器效果(仅限iOS 5)路由音频输入,然后退出硬件.我可以让它从输入直接路由到输出,但我无法让过滤器工作.我不确定它是滤波器音频单元还是路由器我错了.
这个位只是我尝试设置过滤器和更改路由以便数据处理它.
任何帮助表示赞赏.
// ******* BEGIN FILTER ********
NSLog(@"Begin filter");
// Creates Audio Component Description - Output Filter
AudioComponentDescription filterCompDesc;
filterCompDesc .componentType = kAudioUnitType_Effect;
filterCompDesc.componentSubType = kAudioUnitSubType_LowPassFilter;
filterCompDesc.componentManufacturer = kAudioUnitManufacturer_Apple;
filterCompDesc.componentFlags = 1;
filterCompDesc.componentFlagsMask = 1;
// Create Filter Unit
AudioUnit lpFilterUnit;
AudioComponent filterComponent = AudioComponentFindNext(NULL, &filterCompDesc);
setupErr = AudioComponentInstanceNew(filterComponent, &lpFilterUnit);
NSAssert(setupErr == noErr, @"No instance of filter");
AudioUnitElement bus2 = 2;
setupErr = AudioUnitSetProperty(lpFilterUnit, kAudioUnitSubType_LowPassFilter, kAudioUnitScope_Output, bus2, &oneFlag, sizeof(oneFlag));
AudioUnitElement bus3 = 3;
setupErr = AudioUnitSetProperty(lpFilterUnit, kAudioUnitSubType_LowPassFilter, kAudioUnitScope_Input, …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中添加一个功能,用户可以选择在支持蓝牙的扬声器上播放音频.我的车上有一个Parrot Easydrive,这适用于电话,例如Dictafoon App等.
我知道我应该使用Core Audio框架.当蓝牙设备连接时,据说很容易将音频流传输到该连接.我现在正在寻找Core Audio示例代码(或书籍),其中解释了连接和流式传输到具有Core Audio的蓝牙设备.
任何人都可以对此有所了解吗?如果有其他框架或示例代码我可以使用请提及!
提前谢谢了!
我正在做类似的事情,如从iPod库中流式传输音频,通过网络或蓝牙发送数据,以及使用音频队列播放.
感谢您提出这个问题和代码.帮助我很多.
我有两个问题.
我应该从一台设备发送到另一台设备?CMSampleBufferRef?AudioBuffer?MDATA?AudioQueueBuffer?包?我不知道.
当应用程序完成播放时,它崩溃了,我收到错误(-12733).我只是想知道如何处理错误而不是让它崩溃.(检查OSState?发生错误时,停止吗?)
错误:无法读取样本数据(-12733)
AUParamInfo()似乎不存在于iOS7框架(CoreAudio,AudioUnit,AudioToolbox)中.我想知道如何获得单位的所有参数.也就是说,在不知道它是什么类型或子类型的情况下,因为如果不是,那么答案就是在音频单元参数参考中查找.
我正在将流媒体音频引擎迁移到swift.我发现很难在swift中使用C Audio API.
我有一个AudioFileStreamOpen api的问题,它需要2个C函数作为参数.我不知道如何使用这个API很快.
AudioFileStreamOpen(self as UnsafePointer<()>, propertyProc, packetProc, kAudioFileMP3Type, audioStreamId)
Run Code Online (Sandbox Code Playgroud)
我为此API定义了如下的回调方法.但我得到编译错误.
func propertyProc(inClientData: UnsafePointer<()>,inFileStreamId: AudioFileStreamID,inPropertyId: AudioFileStreamPropertyID,ioFlags: UnsafePointer<UInt32>) -> Void {
.....
}
func packetProc(inClientData: UnsafePointer<()>,inNumberOfBytes: UInt32,inNumberOfPackets: UInt32, ConstUnsafePointer<()>, inPacketDescriptions: UnsafePointer<AudioStreamPacketDescription>) -> Void {
.....
}
Run Code Online (Sandbox Code Playgroud)
感谢您在swift中正确定义此C API

所以下面的代码应该一遍又一遍地重放chimes.wav文件,音高更高,但是底部的错误会崩溃.任何人都可以找到导致此错误的原因吗?
import UIKit
import AVFoundation
class aboutViewController: UIViewController {
var audioEngine: AVAudioEngine = AVAudioEngine()
var audioFilePlayer: AVAudioPlayerNode = AVAudioPlayerNode()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var timePitch = AVAudioUnitTimePitch()
timePitch.pitch = 2000
let filePath: String = NSBundle.mainBundle().pathForResource("chimes", ofType: "wav")!
let fileURL: NSURL = NSURL(fileURLWithPath: filePath)!
let audioFile = AVAudioFile(forReading: fileURL, error: nil)
let audioFormat = audioFile.processingFormat
let audioFrameCount = UInt32(audioFile.length)
let audioFileBuffer = AVAudioPCMBuffer(PCMFormat: audioFormat, frameCapacity: audioFrameCount)
audioFile.readIntoBuffer(audioFileBuffer, …Run Code Online (Sandbox Code Playgroud) 我不明白该如何UnsafeMutablePointer在Swift 3中使用AURenderCallback。
我尝试下面的代码:
import Foundation
import AudioToolbox
let sineFrequency = 880.0
// MARK: User data struct
struct SineWavePlayer {
var outputUnit: AudioUnit? = nil
var startingFrameCount: Double = 0
}
// MARK: Callback function
let SineWaveRenderProc: AURenderCallback = {(inRefCon, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, ioData) -> OSStatus in
var player = UnsafeMutablePointer<SineWavePlayer>(inRefCon)
var j = player.pointee.startingFrameCount
let cycleLength = 44100 / sineFrequency
for frame in 0..<inNumberFrames {
var buffers = UnsafeMutableAudioBufferListPointer(ioData)
UnsafeMutablePointer<Float32>(buffers[0].mData)[Int(frame)] = Float32(sin(2 * M_PI * …Run Code Online (Sandbox Code Playgroud) core-audio ×10
ios ×7
audiounit ×2
objective-c ×2
swift ×2
a2dp ×1
audioqueue ×1
bluetooth ×1
c ×1
c++ ×1
ios7 ×1
iphone ×1
speaker ×1
swift3 ×1