4
我目前使用AVAssetWriter
來生成Quicktime mov。視頻軌道正確生成。現在我想添加一個「垃圾」mp4a音軌。音頻可能只是白噪聲。我主要關心的是包含這兩個視頻和音頻軌道的mov文件。使用AVAssetWriter創建白噪聲音軌
如何設置僅包含mp4a格式白噪聲的CMSampleBufferRef
?以下是我試過到目前爲止:
CMSampleBufferRef garbageAudioSampleBuffer = NULL;
AudioStreamBasicDescription audioFormat;
audioFormat.mSampleRate = 44100;
audioFormat.mFormatID = kAudioFormatLinearPCM;
audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = 2;
audioFormat.mBitsPerChannel = 16;
audioFormat.mBytesPerPacket = 4;
audioFormat.mBytesPerFrame = 4;
CMAudioFormatDescriptionRef audioFormatDescrip = NULL;
CMAudioFormatDescriptionCreate(kCFAllocatorDefault,
&audioFormat,
0,
NULL,
0,
NULL,
NULL,
&audioFormatDescrip
);
CMSampleBufferCreate(kCFAllocatorDefault,
NULL,
YES,
NULL,
NULL,
NULL, // audioFormatDescrip,
0,
0,
NULL,
0,
NULL,
&garbageAudioSampleBuffer
);
if(myAVAssetAudioWriterInput isReadyForMoreMediaData)
[myAVAssetAudioWriterInput appendSampleBuffer:garbageAudioSampleBuffer];
當NULL
針對audioFormatDescrip通過成功生成的MOV文件,但只包含一個視頻軌道(無音頻軌道)。當我真正傳遞audioFormatDescrip時,mov文件似乎已損壞。我可能不得不通過一些樣品,但我不知道如何。
注意:我已驗證appendSampleBuffer
返回YES
(爲簡潔起見,我省略了該代碼)。
好點!我會解決這些問題。 'CMAudioSampleBufferCreateWithPacketDescriptions'聽起來很有希望。 – MrDatabase
你有沒有設法通過寫入多個帶有音頻的緩衝區來工作?我有這個問題:http://stackoverflow.com/questions/12187124/writing-video-generated-audio-to-avassetwriterinput-audio-stuttering – Pete