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文件。