如何使用NSTimeInterval创建CMTime引用

时间:2015-11-02 01:13:42

标签: swift swift2 cmtime

我需要帮助在swift 2中创建一个CMTime变量,这样我就可以创建一个AVMutableCompostion。目前的代码:

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

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

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

摘要:引导它在“视频持续时间”作为播放器传递的行中崩溃

    // 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 */
    }

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

1 个答案:

答案 0 :(得分:0)

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

另一个问题是你没有遵守如何获得AVAsset duration的规则。您不能简单地创建AVAsset并立即询问其duration。这个属性(像许多其他人一样)需要时间来获取。请阅读AVAsynchronousKeyValueLoading上的文档。