Возможно, большинство из вас использует WhatsApp, и вы, вероятно, знаете, что, когда вы хотите отправить видео одному из ваших контактов WhatsApp, прежде всего, сжимать видео до максимального размера 16 МБ и только послесловие он загружает выбранное видео в ваш контакт.Как сжать видео до точного размера в объективе c?
то, что я пытаюсь сделать, это то же самое, что и с использованием AV Foundation или для более конкретного AVAssetExportSession.
вот мой код:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL *videoURL = info[UIImagePickerControllerMediaURL];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *sourcePath =[documentsDirectory stringByAppendingString:@"/output.mov"];
NSURL *outputURL = [NSURL fileURLWithPath:sourcePath];
[self convertVideoToLowQuailtyWithInputURL:videoURL outputURL:outputURL handler:^(AVAssetExportSession *exportSession)
{
if (exportSession.status == AVAssetExportSessionStatusCompleted)
{
NSLog(@"completed");
}
else
{
NSLog(@"error: %@",exportSession.error);
}
}];
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)convertVideoToLowQuailtyWithInputURL:(NSURL*)inputURL outputURL:(NSURL*)outputURL handler:(void (^)(AVAssetExportSession*))handler
{
[[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:inputURL options:nil];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetMediumQuality];
exportSession.outputURL = outputURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
[exportSession exportAsynchronouslyWithCompletionHandler:^(void)
{
handler(exportSession);
}];
}
этот код работает замечательно, он принимает видео и сжатие его очень маленького размера.
проблема заключается в том, что пользователь пытается загрузить довольно длинное видео с мощной камерой, размер которой не достаточно мал для меня.
Что я хочу сделать, это на самом деле сжать любое видео до ограниченного размера. позволяет говорить, например, 16Mb, как WhatsApp. Как я могу это сделать?
Пройтись ссылке ниже [http://stackoverflow.com/ вопросы/23342964/видео-сжатия-ИОС-уменьшения-в-размер-о-а-видео-Usin-avassetwriter RQ = 1] [1] [1]: http://stackoverflow.com/вопросы/23342964/видео-сжатия КСН-свертка-на-размер-оф-а-видео-нас в-avassetwriter? rq = 1 – ios
@Ravi в добавленной вами ссылке есть только настройки того, как будет выглядеть видео после компрессии, то есть на самом деле это решение, но есть много недостающего кода, и я до сих пор не знаю как работать с этим маленьким фрагментом кода. вы можете помочь? –
Значение видео 4k и 1080p будет иметь такое же качество в конце? так адаптируемое сжатие на whatsapp? –