Ios:从视频中删除音频 [英] Ios: Remove audio from video

查看:100
本文介绍了Ios:从视频中删除音频的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有时需要静音视频发送最终用户,所以我需要从视频中删除音频文件。
将单个进程的视频传递给静音。

I have requirement some times mute video send enduser so I required remove audio file form the video. Passing video for single process for mute.

推荐答案

// 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;
}

这篇关于Ios:从视频中删除音频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆