ビデオからwav、alfなどのオーディオファイルを作成する方法を探しています。
簡単に言うと、ビデオからオーディオのみを取得したいのです。
どうすれば作れますか?
ビデオなしでAVAssetExportSessionを試しましたが、オーディオのみでした。
しかし、それは機能しません。
PLSヘルプ。
これが私のコードです
- (void)exportAudioComposition
{
self.filteredSoundURL = [self saveAudioFileRoot];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:self.assetComposition presetName:AVAssetExportPresetPassthrough];
exportSession.outputURL = self.filteredSoundURL;
exportSession.outputFileType = AVFileTypeWAVE;
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, self.assetComposition.duration);
[exportSession exportAsynchronouslyWithCompletionHandler:^
{
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
[self doAudioProcessWithFilter:SOUN_TURTLE andAssetURL:self.filteredSoundURL];
}
- (void)setupCompositionWithAudio:(NSURL *)audioURL andVideo:(NSURL *)videoURL
{
if (self.assetComposition != nil)
{
self.assetComposition = nil;
}
self.assetComposition = [AVMutableComposition composition];
if (videoURL != nil)
{
AVURLAsset *videoAsset = [[AVURLAsset alloc] initWithURL:videoURL options:nil];
AVMutableCompositionTrack *compVideoTrack = [self.assetComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *videoTrack = [[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
CMTimeRange videoTimeRange = CMTimeRangeMake(kCMTimeZero, videoAsset.duration);
[compVideoTrack insertTimeRange:videoTimeRange ofTrack:videoTrack atTime:kCMTimeZero error:nil];
}
AVURLAsset *audioAsset = [[AVURLAsset alloc] initWithURL:audioURL options:nil];
AVMutableCompositionTrack *compAudioTrack = [self.assetComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *audioTrack = [[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
CMTimeRange audioTimeRange = CMTimeRangeMake(kCMTimeZero, audioAsset.duration);
[compAudioTrack insertTimeRange:audioTimeRange ofTrack:audioTrack atTime:kCMTimeZero error:nil];
}