gpt4 book ai didi

iphone - iPhone 中的 AAC header 和其他信息

转载 作者:行者123 更新时间:2023-12-03 19:23:14 25 4
gpt4 key购买 nike

我正在构建一个录制声音的 iPhone 应用程序。我使用音频队列服务,一切都非常适合录音。

问题是,我正在使用 AudioFileWritePackets 进行文件写入,并且我正在尝试将相同的“AAC + ADTS”数据包放入网络套接字。

生成的文件有所不同,因为某些“ header ”或“adts header ”可能丢失。我正在寻找有关如何编写 ADTS header 和/或 AAC header 的想法?社区可以帮助我解决这个问题,或者向我推荐一份演示如何执行此操作的指南吗?

我目前有我的缓冲区处理程序方法:

void Recorder::MyInputBufferHandler(void inUserData,
AudioQueueRefinAQ, AudioQueueBufferRefinBuffer,
const AudioTimeStamp*inStartTime,
UInt32 inNumPackets,
const AudioStreamPacketDescription*inPacketDesc) {
AQRecorder *aqr = (AQRecorder *)inUserData;

try {
if (inNumPackets > 0) {
// write packets to file
XThrowIfError(AudioFileWritePackets(aqr->mRecordFile,
FALSE,
inBuffer->mAudioDataByteSize,
inPacketDesc,
aqr->mRecordPacket,
&inNumPackets,
inBuffer->mAudioData),
"AudioFileWritePackets failed");

fprintf(stderr, "Writing.");

// We write the Net Buffer.
[aqr->socket_if writeData :(void *)(inBuffer->mAudioData)
:inBuffer->mAudioDataByteSize];

aqr->mRecordPacket += inNumPackets;
}

// if we're not stopping, re-enqueue the buffe so that it gets filled again
if (aqr->IsRunning()) {
XThrowIfError(AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, NULL),
"AudioQueueEnqueueBuffer failed");
}

}

catch (CAXException e) {
char buf[256];
fprintf(stderr, "Error: %s (%s)\n", e.mOperation, e.FormatError(buf));
}
}

最佳答案

我找到了解决方案:

我实现了回调

  XThrowIfError(
AudioFileInitializeWithCallbacks(
this,
nil,
BufferFilled_callback,
nil,
nil,
//kAudioFileCAFType,
kAudioFileAAC_ADTSType,
&mRecordFormat,
kAudioFileFlags_EraseFile,
&mRecordFile),
"InitializeWithCallbacks failed");

...瞧!您必须实现的真正回调是 BufferFilled_callback。这是我的实现:

OSStatus AQRecorder::BufferFilled_callback(
void * inUserData,
SInt64 inPosition,
UInt32 requestCount,
const void * buffer,
UInt32 * actualCount) {

AQRecorder *aqr = (AQRecorder *)inUserData;

// You can write these bytes to anywhere.
// You can build a streaming server

return 0;
}

如果您想了解更多有关音频队列服务的信息,您可以从 iPhone 版 Flipzu 获得一些想法(前直播音频应用程序//我们必须关闭它,因为我们无法筹集资金)。

https://github.com/lucaslain/Flipzu_iPhone

最好,

卢卡斯。

关于iphone - iPhone 中的 AAC header 和其他信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3009928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com