Ios:从视频中删除音频

Mit*_*iya 4 iphone audio video ios

我有一些要求静音视频发送enduser所以我需要从视频中删除音频文件.传递单个进程的视频静音.

Mit*_*iya 6

// Remove audio from video     
- (void) RemoveAudioFromVideo:(NSString *)VideoLocalPath {
    NSString * initPath1 = VideoLocalPath;
    AVMutableComposition *composition = [AVMutableComposition composition];

    NSString *inputVideoPath = initPath1;
    AVURLAsset * sourceAsset = [[AVURLAsset alloc] initWithURL:[NSURL fileURLWithPath:inputVideoPath] options:nil];

    AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

    BOOL ok = NO;

    AVAssetTrack * sourceVideoTrack = [[sourceAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

    CMTimeRange x = CMTimeRangeMake(kCMTimeZero, [sourceAsset duration]);

    ok = [compositionVideoTrack insertTimeRange:x ofTrack:sourceVideoTrack atTime:kCMTimeZero error:nil];

    if([[NSFileManager defaultManager] fileExistsAtPath:initPath1]) {
        [[NSFileManager defaultManager] removeItemAtPath:initPath1 error:nil];
    }

    NSURL *url = [[NSURL alloc] initFileURLWithPath: initPath1];

    AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];

    exporter.outputURL=url;

    NSLog(@";%@", [exporter supportedFileTypes]);

    exporter.outputFileType = @"com.apple.quicktime-movie";
    [exporter exportAsynchronouslyWithCompletionHandler:^{
        [self savefinalVideoFileToDocuments:exporter.outputURL];
    }];
}

// Write final Video
-(void)savefinalVideoFileToDocuments:(NSURL *)url {
    NSString *storePath = [[self applicationCacheDirectory] stringByAppendingPathComponent:@"Videos"];
    NSData * movieData = [NSData dataWithContentsOfURL:url];
    [movieData writeToFile:storePath atomically:YES];
}

// Directory Path
- (NSString *)applicationCacheDirectory {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
    return documentsDirectory;
}
Run Code Online (Sandbox Code Playgroud)