BHVideoManager 2.0

BHVideoManager 2.0

BandarHelal 维护。



CI Status Version License Platform

BHVideoManager

视频工具管理器

未来

  • 修剪视频或音频。
  • 将音频转换为视频。
  • 将视频转换为音频。
  • 合并视频和音频。
  • 以不同质量导出视频。

以不同质量导出视频

  • 例如,我有一个 mp4 文件(old.mp4 (720p)) 我想将视频质量转换为 480p
    NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
    NSURL *filePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"old.mp4"];
    // you can select another quality by typing AVAssetExportPreset and xcode will show you :)
    [BHVideoManager ExportVideo:filePath WithQuality:AVAssetExportPreset640x480 SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"videoExported" CompletionHandler:^(AVAssetExportSession *exportsession) {
    if (AVAssetExportSessionStatusFailed == exportsession.status) {
    NSLog(@"faild:%@", exportsession.error);
    } else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
    NSLog(@"Done");
    }
    }];

修剪音频

  • 例如,我有一个 m4a 文件(CleanBandit-Rockabye.m4a) 我想裁剪一半的时间
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
NSURL *filePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"CleanBandit-Rockabye.m4a"];

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:filePath options:nil];

[BHVideoManager TrimAudioWithPath:filePath StartTime:kCMTimeZero EndTime:CMTimeMake(asset.duration.value /2, asset.duration.timescale) SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"test" CompletionHandler:^(AVAssetExportSession *exportsession) {
if (AVAssetExportSessionStatusFailed == exportsession.status) {
NSLog(@"faild:%@", exportsession.error);
} else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
NSLog(@"Done");
}
}];

修剪视频

  • 例如,我有一个 mp4 文件(old.mp4) 我想裁剪一半的时间
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
NSURL *filePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"old.mp4"];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:filePath options:nil];

[BHVideoManager TrimVideoWithPath:filePath StartTime:kCMTimeZero EndTime:CMTimeMake(asset.duration.value/2, asset.duration.timescale) SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"test2" CompletionHandler:^(AVAssetExportSession *exportsession) {
if (AVAssetExportSessionStatusFailed == exportsession.status) {
NSLog(@"faild:%@", exportsession.error);
} else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
NSLog(@"Done");
}
}];

合并视频与音频

NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
NSURL *VideofilePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"test2.mp4"];
NSURL *audioFilePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"test.m4a"];

[BHVideoManager MergeVideo:VideofilePath WithAudio:audioFilePath SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"VideoMerged" CompletionHandler:^(AVAssetExportSession *exportsession) {
if (AVAssetExportSessionStatusFailed == exportsession.status) {
NSLog(@"faild:%@", exportsession.error);
} else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
NSLog(@"Done");
}
}];

将视频转换为音频

  • 例如,我有一个mp4文件(test2.mp4)
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
NSURL *filePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"test2.mp4"];

[BHVideoManager ConvertVideoToAudioWithPath:filePath SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"VideoConverted" CompletionHandler:^(AVAssetExportSession *exportsession) {
if (AVAssetExportSessionStatusFailed == exportsession.status) {
NSLog(@"faild:%@", exportsession.error);
} else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
NSLog(@"Done");
}
}];

将音频转换为视频

  • 例如,我有一个m4a文件(VideoConverted.m4a)
NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0];
NSURL *filePath = [[NSURL fileURLWithPath:documentsDirectoryPath] URLByAppendingPathComponent:@"VideoConverted.m4a"];

[BHVideoManager ConvertAudioToVideoWithPath:filePath SaveFileToPath:[NSURL fileURLWithPath:documentsDirectoryPath] TitleFile:@"AudioConverted" CompletionHandler:^(AVAssetExportSession *exportsession) {
if (AVAssetExportSessionStatusFailed == exportsession.status) {
NSLog(@"faild:%@", exportsession.error);
} else if (AVAssetExportSessionStatusCompleted == exportsession.status) {
NSLog(@"Done");
}
}];

示例

要运行示例项目,首先克隆仓库,然后从示例目录运行pod install

要求

安装

BHVideoManager可以通过CocoaPods获取。要安装它,只需在Podfile中添加以下行

pod 'BHVideoManager'

作者

BandarHL,bandarhl

许可证

BHVideoManager遵循MIT许可证。更多详细信息,请参阅LICENSE文件。