Есть ли API, который будет работать на iOS, чтобы изменить частоту смены кадров существующего видео? - PullRequest
0 голосов
/ 16 октября 2019

Я ищу способ получить в качестве входных данных любое видео (которое поддерживается на iOS) и сохранить на устройстве новое видео с новой частотой кадров в секунду. Мотивация состоит в том, чтобы уменьшить размер видео, а также сделать его максимально облегченным.

  • Пробовал использовать библиотеку ffmpeg из командной строки (нужно, чтобы она запускалась непосредственно из приложения)
  • Пробовал работать с SDAVAssetExportSessionDelegate, но ему удавалось изменять только бит в секунду (качество каждого кадра ниже)
  • Хоть и работать с OpenCV - но предпочитал что-то более легкое и, по возможности, встраивать

    Цель C: '' '

    compressionEncoder.videoSettings = @
    {
        AVVideoCodecKey: AVVideoCodecTypeH264,
        AVVideoWidthKey: [NSNumber numberWithInt:width],   //Set your resolution width here
        AVVideoHeightKey: [NSNumber numberWithInt:height],  //set your resolution height here
        AVVideoCompressionPropertiesKey: @
        {
            AVVideoAverageBitRateKey: [NSNumber numberWithInt:bitRateKey], // Give bitrate for lower size low values
            AVVideoProfileLevelKey: AVVideoProfileLevelH264High40,
            // Does not change - quality setting and not reletaed to playback framerate!
            //AVVideoMaxKeyFrameIntervalKey: @800,
        },
    };
    compressionEncoder.audioSettings = @
    {
        AVFormatIDKey: @(kAudioFormatMPEG4AAC),
        AVNumberOfChannelsKey: @2,
        AVSampleRateKey: @44100,
        AVEncoderBitRateKey: @128000,
    };
    

    ' ''

Ожидается видео с меньшим числом кадров в секунду, каждый кадр находится в одном и том же кадрекачество. Аналогичен краткой миниатюре видео

1 Ответ

0 голосов
/ 22 октября 2019

Тип преобразования, который вы выполняете, будет занимать много времени и энергии на мобильном устройстве, но я предполагаю, что вы уже знаете об этом.

Учитывая, что ваша конечная цель - уменьшить размер, сохраняя при этомПри приемлемом качестве вы можете поэкспериментировать с различными настройками и т. д. в кодировках.

Для этого типа манипуляции с видео ffmpeg является хорошим выбором, как вы, вероятно, видели из своей командной строки. Чтобы использовать ffmpeg из приложения, распространенным подходом является использование хорошо поддерживаемой оболочки ffmpeg - это эффективно запускает команды командной строки Ffmpeg из вашего приложения.

Преимущество состоит в том, что должен работать весь обычный синтаксиси вы можете использовать огромное количество информации о синтаксисе командной строки ffmpeg в сети. Недостатком является то, что ffmpeg не был спроектирован таким образом, чтобы его можно было обернуть, поэтому вы можете столкнуться с некоторыми проблемами, хотя с хорошо поддерживаемой оберткой вы должны найти либо помощь, либо другие уже обошли эти проблемы.

Некоторые примерыпопулярных упаковщиков iOS ffmpeg:

...