-1

我需要帮助在 swift 2 中创建 CMTime 变量,以便创建 AVMutableCompostion。当前代码:

    let videoAsset: AnyObject! = AVAsset(URL: outputFileURL)

    let videoDuration:CMTime = CMTimeMake(Int64(videoAsset.duration), 1)

但是上面的变量 videoDuration 一直返回零!我仔细检查以确保 videoAsset.duration 不是 nil 而不是。

摘要:导致它在“videoDuration”作为 peramiter 传入的行处崩溃

    // Merge audio and video tracks to complete video
    let videoTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: Int32(kCMPersistentTrackID_Invalid))
    do {
        try videoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoDuration),
            ofTrack: videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] ,
            atTime: kCMTimeZero)
    } catch _ {
        /* TODO: Finish migration: handle the expression passed to error arg: kCMTimeZero */
    }

请帮忙!任何建议将不胜感激 :)

4

1 回答 1

0

一个问题是您正在转换videoAsset为 AnyObject。不要那样做。它想成为 AVAsset。让它成为一个。

另一个问题是您没有遵守如何获取 AVAsset 的规则duration。您不能简单地创建一个 AVAsset 并立即请求它的duration. 此属性(与许多其他属性一样)需要时间来获取。请阅读有关AVAsynchronousKeyValueLoading的文档。

于 2015-11-02T02:03:49.643 回答