아마도 iOS 4 SDK에서는 사용자의 iTunes 보관함을 편집하고 쓸 수 있습니다. 내 아이폰/아이팟 라이브러리에서 성공적으로 AVAsset을로드 할 수 있지만 빠른 테스트로 AVAssetExportSession을 사용하여 바로 동일한 파일을 덮어 쓰려고하는데 항상 상태 "4"를 반환합니다. 생각하다은 AVAssetExportSessionStatusFailed입니다. .AVAssetExportSession을 사용하여 iPhone/iPod 라이브러리의 노래를 덮어 쓸 수 있습니까?
enum {
AVAssetExportSessionStatusUnknown,
AVAssetExportSessionStatusExporting,
AVAssetExportSessionStatusCompleted,
AVAssetExportSessionStatusFailed,
AVAssetExportSessionStatusCancelled,
AVAssetExportSessionStatusWaiting
};
을하지만 AVAssetExportSession.h에 말한다 : 문서에서는 말한다
// before this, i'm using mpmediapicker to pick an m4a file i synched with my itunes library
NSURL *assetUrl = [[self.userMediaItemCollection.items objectAtIndex: 0] valueForProperty: MPMediaItemPropertyAssetURL];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL: assetUrl options: nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset: asset presetName: AVAssetExportPresetAppleM4A];
exportSession.outputURL = asset.URL;
exportSession.outputFileType = AVFileTypeAppleM4A;
NSLog(@"output filetype: %@", exportSession.outputFileType);
// prints "com.apple.m4a-audio"
[exportSession exportAsynchronouslyWithCompletionHandler: ^(void) {
NSLog(@"status: %i for %@", exportSession.status, exportSession.outputURL);
// prints "status: 4 for ipod-library://item/item.m4a?id=3631988601206299774"
}];
[exportSession release];
: 여기
enum {
AVAssetExportSessionStatusUnknown,
AVAssetExportSessionStatusWaiting,
AVAssetExportSessionStatusExporting,
AVAssetExportSessionStatusCompleted,
AVAssetExportSessionStatusFailed,
AVAssetExportSessionStatusCancelled
};
typedef NSInteger AVAssetExportSessionStatus;
내가 사용하고 코드입니다
어느 쪽이든 ... 나는 그것이 "실패"했거나 "취소 된 것"이라고 생각합니다. 다른 사람이 이전에 미디어 라이브러리에 성공적으로 기록 했습니까?
감사합니다.
if (exportSession.status == AVAssetExportSessionStatusFailed) NSLog (@ "failed"); if (exportSession.status == AVAssetExportSessionStatusCancelled) NSLog (@ "cancelled"); 정말로 덮어 쓸 수 있습니까? – Thomas
또한 NSLog (@ "ExportSessionError : % @", exportSession.error);가 도움이됩니다. – Thomas
감사합니다. 실패한 것처럼 보입니다. 그래서 그것은 전투의 절반입니다. 다른 절반은 이유를 알아 내고 있습니다! :) 사용자 dir에 새 파일을 저장 한 다음 asset.URL url에 직접 쓰는 대신 라이브러리에 추가 할 수있는 방법이 있는지 궁금합니다. 흠 ... – taber