失敗我試圖從.mp4
視頻文件中提取音軌,並轉換爲.m4a
音頻文件,使用該outputSettings
AVAssetWriter
類AVAssetWriter轉換AAC 5.1音頻從AVAsset軌道上appendSampleBuffer
AudioChannelLayout channelLayout;
memset(&channelLayout, 0, sizeof(AudioChannelLayout));
channelLayout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
NSDictionary *outputSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[NSNumber numberWithFloat:44100.0], AVSampleRateKey,
[NSNumber numberWithInt:2], AVNumberOfChannelsKey,
[NSNumber numberWithInt:128000], AVEncoderBitRateKey, // 128 kbps
[NSData dataWithBytes:&channelLayout length:sizeof(AudioChannelLayout)], AVChannelLayoutKey,
nil];
案例1:。與音軌PARAMS MP4視頻文件(CMFormatDescriptionRef
打印):
mediaType:'soun'
mediaSubType:'aac '
mSampleRate: 44100.000000
mFormatID: 'aac '
mChannelsPerFrame: 2
ACL: {Stereo (L R)}
結果:成功創建.m4a
輸出文件與定義的輸出PARAMS
情況2: .mp4格式的視頻與音頻軌道PARAMS文件(帶有CMFormatDescriptionRef
打印):
mediaType:'soun'
mediaSubType:'aac '
mSampleRate: 48000.000000
mFormatID: 'aac '
mChannelsPerFrame: 6
ACL: {5.1 (C L R Ls Rs LFE)}
結果:轉換失敗時,加入樣品時緩衝[AVAssetWriter appendSampleBuffer: ...]
未知error
:
Error Domain: NSOSStatusErrorDomain
code: -12780
description: The operation could not be completed
要轉換視頻音頻我使用相同的算法與那裏描述:https://github.com/rs/SDAVAssetExportSession/blob/master/SDAVAssetExportSession.m
我也試圖建立channelLayout.mChannelLayoutTag
與kAudioChannelLayoutTag_MPEG_5_1_D
,並與6
值更新AVNumberOfChannelsKey
,但它並沒有爲我工作。
任何人都可以幫助我瞭解我做錯了什麼嗎?可能有沒有解決方案只使用iOS AVFoundation框架來執行此任務?我應該使用不同的outputParams
用於5.1 aac 6聲道的音軌嗎?