Обнаружьте установку FFmpeg и Версию

Мне удалось создать обходной путь для этого. Я могу проверить ожидаемый размер моего изображения в layoutSubviews, и если он не соответствует размеру UIImage, я могу использовать UIGraphicsImageRenderer, чтобы создать новое изображение, масштабированное до правильного размера. Я создал расширение UIImage для облегчения этого:

extension UIImage {

    internal func imageScaled(toSize scaledSize: CGSize) -> UIImage {
        let renderer = UIGraphicsImageRenderer(size: scaledSize)
        let newImage = renderer.image { [unowned self] _ in
            self.draw(in: CGRect(origin: .zero, size: scaledSize))
        }
        return newImage
    }
}

Теперь мой обновленный метод layoutSubviews выглядит следующим образом:

public override func layoutSubviews() {
    super.layoutSubviews()

    // Layout circle
    let path = UIBezierPath(ovalIn: bounds.insetBy(dx: lineWidth.mid, dy: lineWidth.mid))
    circleLayer.path = path.cgPath

    // Layout check
    if let checkImage = checkImage, checkImage.size != checkImageSize {
        checkLayer.contents = checkImage.imageScaled(toSize: checkImageSize).cgImage
    }
    let checkOrigin  = CGPoint(x: bounds.midX - checkImageSize.midW, y: bounds.midY - checkImageSize.midH)
    checkLayer.frame = CGRect(origin: checkOrigin, size: checkImageSize)
}

Это приводит к хорошему четкому изображению:

scaled image

11
задан Emii Khaos 6 March 2016 в 16:53
поделиться

3 ответа

Вы ответили на свой вопрос, вы можете запустить команду и, если она получит отрицательный ответ, вы знаете, что она не установлена, или вы можете проверить пути по умолчанию, заданные пользователем для возможных двоичных файлов ffmpeg.

3
ответ дан 3 December 2019 в 06:47
поделиться

You could give this a try:

function commandExists($command) {
    $command = escapeshellarg($command);
    $exists = exec("man ".$command,$out);
    return sizeof($out);
}

if (commandExists("ffmpeg")>0) {
   // FFMPeg Exists on server
} else {
   // No FFMPeg
}

Reusable for other functions as well - not certain of security concerns.

0
ответ дан 3 December 2019 в 06:47
поделиться

Третий параметр функции exec () - это возвращаемое значение выполненной программы. Используйте его так:

exec($cmd, $output, $returnvalue);
if ($returnvalue == 127) {
    # not available
}
else {
    #available
}

Это работает на моем компьютере с Ubuntu.

6
ответ дан 3 December 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: