Валентин@ValentinStrazdin
Разработчик мобильных приложений
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Работает в
- Зарегистрирован
- Активность
Специализация
Разработчик мобильных приложений, Разработчик приложений
Мне кажется, это дело вкуса. Для минимизации новых сущностей, можно было бы не добавлять свойство
isRightToLeftUIи использовать такое условие для разворота интервалов справа налево в случае арабской локализации:if!view.isLeftToRightUI {intervals = intervals.map { $0.inverted }.sorted()}Используя свойство
isRightToLeftUI, мы подчеркиваем, что здесь нужно специально обработать случай с арабской локализацией.https://developer.apple.com/reference/avfoundation/avplayer/1388846-rate
вызвать метод -(void)setRate:(float)rate; Скорость воспроизведения может принимать значения от 0 до 1.
0 — воспроизведение остановлено
1 — воспроизведение с нормальной скоростью.
Я добавил настройку устройства видео входа в своем проекте на GitHub — можно посмотреть как это выглядит на iPhone 6S, например.
Достаточно поменять FRAMES_PER_SECOND 240, PLAYER_RATE 0.125f
Первый раз мне нужно было асинхронно обрабатывать изображения — это можно сделать только используя CPU, а данная библиотека делала все преобразования, используя графическую память GPU.
Второй раз я хотел использовать камеру, но внешний вид GPUImageVideoCamera меня не устроил, а поменять его не было возможности.
Один раз написав приложение, используя AVFoundation вместо UIImagePickerController, можно потом смело его использовать в других приложениях. При этом вы можете легко изменить внешний вид своей камеры.
Новые модели позволяют снимать замедленное видео со скоростью до 240 кадров в секунду. В этом случае видео файл занимает очень много места. Мне нужно было уменьшить размер файла и при этом не слишком сильно ухудшить качество. Одним из возможных вариантов было сжатие видео перед отправкой. Другой вариант — создать свою камеру и задать параметры съемки, что я и сделал.
Для того, чтобы изменить параметры записи в файл, мне достаточно было пары строчек кода:
MovieFileOutput = [[AVCaptureMovieFileOutput alloc] init];
CMTime maxDuration = CMTimeMakeWithSeconds(TOTAL_RECORDING_TIME, FRAMES_PER_SECOND);
MovieFileOutput.maxRecordedDuration = maxDuration;
Если вам нужно увеличить количество кадров в секунду, то кроме изменения константы FRAMES_PER_SECOND, потребуется еще настроить устройство видео входа. Более подробно можно посмотреть здесь — https://github.com/shu223/SlowMotionVideoRecorder
2. Я не пробовал делать на Swift, но все ссылки на AVFoundation дают примеры кода на Swift. Так что, я думаю, на Swift тоже должно работать