Tag: aac

iPhone – 如何将.cafaudio文件转换成.aac?

我正在录音。 我能够录制我的audiocaf(核心audio格式).i按照本教程AVAudioRecorder录制iPhone上的audio 。 现在我不想以.aac格式直接录制声音,我需要将录制的.cafaudio文件转换为.aacaudio文件…任何想法如何做到这一点? #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface recordViewController : UIViewController <AVAudioRecorderDelegate, AVAudioPlayerDelegate> { AVAudioRecorder *audioRecorder; AVAudioPlayer *audioPlayer; UIButton *playButton; UIButton *recordButton; UIButton *stopButton; } @property (nonatomic, retain) IBOutlet UIButton *playButton; @property (nonatomic, retain) IBOutlet UIButton *recordButton; @property (nonatomic, retain) IBOutlet UIButton *stopButton; -(IBAction) recordAudio; -(IBAction) playAudio; -(IBAction) stop; @end #import "recordViewController.h" @implementation recordViewController […]

AAC许可证所需的iPhone应用程序?

AAC是一种audio编解码器,“被devise成MP3格式的后继者,AAC通常在相似比特率下获得比MP3更好的音质”。 ( 维基百科的AAC )。 但是,与MP3类似,AAC编解码器的部分function已获得专利,这意味着您不能在所有情况下都简单地使用这些编解码器,而无法确保您获得许可。 如果您开发自己的编码器或解码器,也是如此。 这是因为编写一个自己的编码器或解码器只能从版权问题和软件许可证(因为您拥有版权)中解脱出来,但是它并不能让您免受专利强加给您的要求。 我是否需要为我的iPhone应用程序获取许可证,以便对AAC文件进行编码和/或解码? 这个问题对许多开发人员是有帮助的,但是对于Stackoverflow来说这不是一个合适的问题。 阅读并从这篇文章中学习,但请不要用它作为证据,你可以问类似的问题。 有关更多信息,请参阅关于Stackoverflow 。

我可以使用AVCaptureSession将AACstream编码到内存吗?

我正在编写一个iOS应用程序,通过networking传输video和audio。 我正在使用AVCaptureSession抓取使用AVCaptureVideoDataOutput的原始video帧,并使用x264在软件中进行编码。 这很好。 我想为audio做同样的事情,只是我不需要太多的audio控制,所以我想用内置的硬件编码器来产生一个AACstream。 这意味着从audio工具箱层使用audio转换器 。 为了做到这一点,我把一个AVCaptudeAudioDataOutput的audio帧的处理程序: – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { // get the audio samples into a common buffer _pcmBuffer CMBlockBufferRef blockBuffer = CMSampleBufferGetDataBuffer(sampleBuffer); CMBlockBufferGetDataPointer(blockBuffer, 0, NULL, &_pcmBufferSize, &_pcmBuffer); // use AudioConverter to UInt32 ouputPacketsCount = 1; AudioBufferList bufferList; bufferList.mNumberBuffers = 1; bufferList.mBuffers[0].mNumberChannels = 1; bufferList.mBuffers[0].mDataByteSize = sizeof(_aacBuffer); bufferList.mBuffers[0].mData = _aacBuffer; […]

ExtAudioFileWrite m4a / aac在双核设备(ipad 2,iphone 4s)上失败

我写了一个循环来编码由我的应用程序生成的PCMaudio数据使用扩展audio文件服务的AAC。 编码发生在后台线程同步,而不是实时。 这个编码在ipad 1和iphone 3gs / 4上完全适用于ios 4和5.但是,对于双核设备(iphone 4s,ipad 2),第三次调用ExtAudioFileWrite会导致编码线程崩溃,没有堆栈跟踪,也没有错误代码。 这是有问题的代码: 数据格式 AudioStreamBasicDescription AUCanonicalASBD(Float64 sampleRate, UInt32 channel){ AudioStreamBasicDescription audioFormat; audioFormat.mSampleRate = sampleRate; audioFormat.mFormatID = kAudioFormatLinearPCM; audioFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical; audioFormat.mChannelsPerFrame = channel; audioFormat.mBytesPerPacket = sizeof(AudioUnitSampleType); audioFormat.mBytesPerFrame = sizeof(AudioUnitSampleType); audioFormat.mFramesPerPacket = 1; audioFormat.mBitsPerChannel = 8 * sizeof(AudioUnitSampleType); audioFormat.mReserved = 0; return audioFormat; } AudioStreamBasicDescription MixdownAAC(void){ AudioStreamBasicDescription audioFormat; […]

如何使用CoreAudio的AudioConverter实时编码AAC?

所有的示例代码,我可以find使用AudioConverterRef重点是使用情况下,我有所有的数据AudioConverterRef (如转换文件在磁盘上)。 他们通常使用PCM调用AudioConverterFillComplexBuffer作为inInputDataProcUserData进行转换,并将inInputDataProcUserData填入callback中。 (这真的是应该如何使用?为什么它需要callback,然后呢?)对于我的使用情况,我试图从麦克风streamaacaudio,所以我没有文件,我的PCM缓冲区正在实时填写。 由于我没有*ioNumberDataPackets = 0提供所有的数据,所以我一直试图在callback*ioNumberDataPackets = 0中调用*ioNumberDataPackets = 0 ,但是这只是把AudioConverter置于死状态,在那里它需要AudioConverterReset()特德,我没有得到任何数据。 我在网上看到的一个build议是,如果我存储的数据太小,就会从callback中返回一个错误,只要我有更多的数据,就再试一次,但是这看起来像是浪费资源,我不能让自己尝试一下。 我真的需要做“重试,直到我的input缓冲区足够大”,还是有更好的方法吗?