标签: audioqueue

如何从音频队列缓冲区中提取整数样本并将修改后的样本写回?

对于iphone语音更改应用程序(目标c),我试图从录制音频队列缓冲区中取样采样的整数值,在函数中处理它们并将修改后的值写回回放缓冲区.目前我使用这样的东西

AudioBuffer audioBuffer = bufferList->mBuffers[0];
int bufferSize = audioBuffer.mDataByteSize / sizeof(SInt32);
SInt32 *frame = audioBuffer.mData;
SInt32  signalInput[22050];
for( int i=0; i<bufferSize; i++ ) {
    SInt32 currentSample = frame[i];
    *(signalInput +i) = currentSample;
}
Run Code Online (Sandbox Code Playgroud)

提取采样值并且似乎工作得非常好(signalinput应该是用于写入整数样本的目标向量).但是把它们写回缓冲区仍然是一个问题......我搜索了文档和很多论坛以找到解决方案,但还没有成功.

所以我非常感谢任何建议,感谢提前,卢卡斯

iphone buffer sample objective-c audioqueue

5
推荐指数
1
解决办法
2379
查看次数

使用AVAudioPlayer播放攻击/延音(循环)/衰减的最佳方式

我在查找没有转换中断的攻击(声音开始)/延音(循环声音)/衰减(声音结束)序列时遇到问题.是否有任何好的库来处理这个,或者我应该用AVAudioPlayer自己动手?AudioQueue是一个更好看的地方吗?我曾经使用过SoundEngine.cpp,但这已经有一段时间了.CAF仍然是最好的格式吗?

谢谢!

iphone audio avaudioplayer iphone-sdk-3.0 audioqueue

5
推荐指数
1
解决办法
745
查看次数

同时播放和录制音频

我需要同时播放和录制.问题是播放和录制的声音应该不同.播放的sound_1通过耳机插孔连续发送到连接的设备,设备分析此声音_1并通过耳机插孔发回另一个声音_2.我收到了这个声音_2,但是当我尝试录制它时,我混合了sound_1和sound_2.有没有办法单独播放/录制,或者我需要某种过滤器来传入声音2?我尝试用AVAudioPlayer播放声音并用AudioQueue录音,会话是PlayAndRecord.

发现了一些类似的主题:在iOS中播放和录制音频同时使用耳机插孔引脚?

但也没有建设性的答案.

audio audio-recording avaudioplayer audioqueue ios

5
推荐指数
1
解决办法
1439
查看次数

ios中使用AudioQueue播放PCM音频流,第一次可以,但是15分钟后没有声音

我从RTMPPacket获取音频数据,并使用AudioQueue在IPAD中播放它。
首先,声音好听。但大约15分钟后,就没有声音了。
然后数据就ok了,队列正在播放。
我不知道为什么。谁能帮我?谢谢。

这是我用来播放音频的类。

音频播放器.h

#import <Foundation/Foundation.h>
#import <CoreAudio/CoreAudioTypes.h>
#import <CoreFoundation/CoreFoundation.h>
#import <AudioToolbox/AudioToolbox.h>
#include <unistd.h>

#define kNumberBuffers 3

@interface AudioPlayer : NSObject
{
AudioQueueRef                   mQueue;
AudioQueueBufferRef             mBuffers[kNumberBuffers];
AudioStreamBasicDescription     mPlayFormat;
int                             mIndex;
@public
Boolean                         mIsRunning;
Boolean                         mIsInitialized;
int                             mBufferByteSize;
int                             pip_fd[2];
UInt32                          mNumPacketsToRead;
}
@property AudioQueueRef mQueue;

-(id)init;
-(id)initWithSampleRate:(int)sampleRate;
-(void)startPlayWithBufferByteSize:(int)bufferByteSize;
-(void)stopPlay;
-(void)putAudioData:(short*)pcmData;
@end
Run Code Online (Sandbox Code Playgroud)

音频播放器.m

#import "AudioPlayer.h"

@implementation AudioPlayer
@synthesize mQueue;

void AQBufferCallback(void *                inUserData ,
                  AudioQueueRef         inAQ,
                  AudioQueueBufferRef   inBuffer)
{
    AudioPlayer *THIS = (__bridge AudioPlayer *)(inUserData);

    if(THIS->mIsRunning)
    {
        inBuffer->mPacketDescriptionCount = …
Run Code Online (Sandbox Code Playgroud)

audio audioqueue ios

5
推荐指数
0
解决办法
1155
查看次数

如何设置AudioStreamBasicDescription属性?

我正在尝试使用 AudioQueue 从服务器播放 PCM 流数据。

PCM数据格式:

Sample rate = 48000, num of channel = 2, Bit per sample = 16
Run Code Online (Sandbox Code Playgroud)

并且,服务器不会将固定字节流式传输到客户端。(可变字节。)(例如:30848、128、2764、...字节)

如何设置ASBD?不知道怎么设置mFramesPerPacket,,mBytesPerFramemBytesPerPacket我看过Apple的参考文档,但是没有详细的说明。

请给我任何想法。

新添加: 这里,ASBD结构是我设置的。(语言:斯威夫特)

// Create ASBD structure & set properties.
var streamFormat = AudioStreamBasicDescription()

streamFormat.mSampleRate = 48000
streamFormat.mFormatID = kAudioFormatLinearPCM
streamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked
streamFormat.mFramesPerPacket = 1
streamFormat.mChannelsPerFrame = 2
streamFormat.mBitsPerChannel = 16

streamFormat.mBytesPerFrame = (streamFormat.mBitsPerChannel / 8) * streamFormat.mChannelsPerFrame
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame
streamFormat.mReserved = 0

// Create AudioQueue for playing …
Run Code Online (Sandbox Code Playgroud)

pcm audioqueue ios

5
推荐指数
1
解决办法
4111
查看次数

音频队列 - 没有用于调用'AudioSessionInitialize'的匹配函数

我有个问题.我想在我的应用程序中使用一些与声音一起使用的功能.

我找到了示例SpeakHere,并在我的应用程序中包含此应用程序的主要部分功能.但我有3个错误:

没有用于调用'AudioSessionInitialize'的匹配函数

在此输入图像描述

我该如何修复这个错误?

我添加到项目框架:coreAudio,AudioToolbox
我使用ARC.

iphone objective-c core-audio audioqueue ios

4
推荐指数
2
解决办法
2618
查看次数

如何使用AudioQueue从特定位置启动音频文件?

我分析了iPhone dev论坛的"SpeakHere"示例代码.

有一个启动AudioQueue的代码,如下所示..

AudioTimeStamp ats = {0};
AudioQueueStart(mQueue, &ats);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何开始文件中间.

我更改了AudioTimeStamp,其中包含各种值为负数.但它不起作用.

请让我知道你的好评.谢谢.

iphone audioqueue

3
推荐指数
1
解决办法
1242
查看次数

当我需要自定义音频效果时,是否需要处理音频单元?还是我可以依赖音频队列服务?

根据我的理解,音频队列服务是比使用音频单元的音频单元更高级别的API.OpenAL还使用音频单元.因此,Audio Units是iOS中最低级别的音频API.

我需要录制声音,然后将自定义滤镜应用于音频流并播放.音频队列服务似乎适合录制,它们也可以用来播放.但是我仍然不确定他们是否允许将自己的算法应用于音频流,就像AURemoteIO音频单元那样.

core-audio audioqueueservices audioqueue audiounit ios

3
推荐指数
1
解决办法
1477
查看次数

如何在不使用AudioQueueRef的情况下在AudioQueue中设置音量?

如何在AudioQueue中设置音量而不使用AudioQueueRef?

我在StackOverflow上对此有很多疑问,但所有这些都使用了AudioQueueRef对象.

是否可以在不使用AudioQueueRef的情况下这样做?

请建议

谢谢.

iphone objective-c audioqueue ios

2
推荐指数
1
解决办法
2093
查看次数

如何在iOS中从服务器播放流式PCM数据?

我正在尝试开发app从服务器播放流式PCM数据.

我使用过AudioQueue,但效果不好.

PCM数据格式(来自服务器):

Sample rate = 48000, num of channel = 2, Bit per sample = 16
Run Code Online (Sandbox Code Playgroud)

并且,服务器不会将固定字节流式传输到客户端.

(流变量字节.例如:30848,128,2764,......字节)

我的源代码:

在这里,ASBD结构我已经设置并创建了音频队列对象(语言:Swift)

// Create ASBD structure & set properties.
var streamFormat = AudioStreamBasicDescription()

streamFormat.mSampleRate = 48000
streamFormat.mFormatID = kAudioFormatLinearPCM
streamFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked
streamFormat.mFramesPerPacket = 1
streamFormat.mChannelsPerFrame = 2
streamFormat.mBitsPerChannel = 16

streamFormat.mBytesPerFrame = (streamFormat.mBitsPerChannel / 8) * streamFormat.mChannelsPerFrame
streamFormat.mBytesPerPacket = streamFormat.mBytesPerFrame
streamFormat.mReserved = 0

// Create AudioQueue for playing PCM streaming data.
var err = AudioQueueNewOutput(&streamFormat, self.queueCallbackProc, nil, nil, …
Run Code Online (Sandbox Code Playgroud)

core-audio pcm audioqueue ios swift

2
推荐指数
1
解决办法
865
查看次数