Преобразование значений CMTime в swift - PullRequest
0 голосов
/ 10 октября 2018

У меня есть следующие 2 строки кода, которые я перемещаю в Swift, но я немного застрял.

CMTime trimmingTime = CMTimeMake(lround(videoAsset.naturalTimeScale / videoAsset.nominalFrameRate), videoAsset.naturalTimeScale);
CMTimeRange timeRange = CMTimeRangeMake(trimmingTime, CMTimeSubtract(videoAsset.timeRange.duration, trimmingTime));

При преобразовании строки ниже для начала я получаю следующую ошибку.

var trimmingTime: CMTime
trimmingTime = CMTimeMake(value: lround(videoAsset.naturalTimeScale / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)

Двоичный оператор '/' нельзя применить к операндам типа 'CMTimeScale' (он же Int32) и 'Float'

Я пробовал несколько разных подходов.но, похоже, ничего не работает.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

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

Здесь вы должны привести videoAsset.naturalTimeScale (что является CMTimeScale и CMTimeScale типа Int32) к Float, чтобы заставить его работать.

Float(videoAsset.naturalTimeScale)

Но CMTimeMake sЗначение ключа будет принимать значение CMTimeValue тип значения.Так что используйте это как:

trimmingTime = CMTimeMake(value: CMTimeValue(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)

Снова, чтобы сделать ваш код более Swifty, используйте CMTime вместо CMTimeMake как:

trimmingTime = CMTime(value: CMTimeValue(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)
0 голосов
/ 10 октября 2018

Двоичный оператор '/' нельзя применять к операндам типа 'CMTimeScale' (он же Int32 ') и' Float ', поэтому вам нужен прогноз CMTimeScale в Float.

Вам нужноконвертировать CMTimeScale в Float:

trimmingTime = CMTimeMake(value: lround(Float(videoAsset.naturalTimeScale) / videoAsset.nominalFrameRate), timescale: videoAsset.naturalTimeScale)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...