Je construis une application iPhone qui enregistre le son. J'utilise Audio Queue Services, et tout fonctionne bien pour l'enregistrement. Le fait est que j'utilise AudioFileWritePackets pour l'écriture de fichiers, et j'essaye de mettre les mêmes paquets "AAC + ADTS" sur un socket réseau.En-tête AAC et d'autres informations dans l'iPhone
Le fichier résultant est différent car certains "en-têtes" ou "en-têtes" peuvent être manquants. Je cherche des idées sur la façon d'écrire l'en-tête ADTS et/ou en-tête AAC? La communauté pourrait-elle m'aider avec ceci ou me référer à un guide qui a montré comment faire ceci?
J'ai actuellement mon tampon méthode Handler:
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));
}
}
Bonjour Dexter ... vérifiez ma solution ci-dessus! – Lucas