Pull to refresh

Comments 9

Можно ли ускорить или замедлить скорость видео?
Можно ли то же самое сделать на Swift 3.0?

Заранее спасибо.
Шарик
1. Скорость видео обычно определяется количеством кадров в секунду (чем больше кадров в секунду, тем меньше скорость). В моем случае Custom Video Recorder потребовался как раз для того, чтобы снимать видео с нормальной скоростью — 30 кадров в секунду даже если на телефоне включена настройка камеры — 60 fps.
Новые модели позволяют снимать замедленное видео со скоростью до 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 тоже должно работать
Скорость видео обычно определяется количеством кадров в секунду


Я про скорость воспроизведения видео, а не про fps, с которыми все понятно.
Пардон, свойства плейера мне не нужны, у меня вопрос про вашу видеозапись. Упрощу диалог — можно записать видео 10 минутного заката солнца с длительностью 10 секунд?
Вы не можете изменить длительность записи видео, если запись идет напрямую в файл — AVCaptureMovieFileOutput. Вместо этого вы можете использовать AVCaptureStillImageOutput, запустить таймер и каждые 2 секунды делать снимок. За 10 минут у вас получится 300 кадров. После этого вам нужно вручную склеить эти кадры в видеоролик с помощью AVAssetWriter. Если использовать стандартные параметры — 30 кадров в секунду, то как раз получится 10 секунд видео.
Для замедленного воспроизведения отснятого видео нужно у объекта AVPlayer вместо метода -(void)play;
вызвать метод -(void)setRate:(float)rate; Скорость воспроизведения может принимать значения от 0 до 1.
0 — воспроизведение остановлено
1 — воспроизведение с нормальной скоростью.

Я добавил настройку устройства видео входа в своем проекте на GitHub — можно посмотреть как это выглядит на iPhone 6S, например.
Достаточно поменять FRAMES_PER_SECOND 240, PLAYER_RATE 0.125f
UFO just landed and posted this here
Я несколько раз пытался добавить эту библиотеку в свои проекты. К сожалению, при всех своих достоинствах, оба раза она мне не подошла.
Первый раз мне нужно было асинхронно обрабатывать изображения — это можно сделать только используя CPU, а данная библиотека делала все преобразования, используя графическую память GPU.
Второй раз я хотел использовать камеру, но внешний вид GPUImageVideoCamera меня не устроил, а поменять его не было возможности.
Один раз написав приложение, используя AVFoundation вместо UIImagePickerController, можно потом смело его использовать в других приложениях. При этом вы можете легко изменить внешний вид своей камеры.
Sign up to leave a comment.