使用自定义CMTimeRange问​​题

时间:2016-03-07 11:39:54

标签: objective-c swift range avasset cmtime

我想我错过了一些东西。我有一个滑块可以改变资产的持续时间和开始时间。 如果我正在导出具有完整持续时间的视频,那么

 let timeRange = originalVideoTrack.timeRange
        do {
            try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: kCMTimeZero)
        } catch {

        }

一切正常。 但是如果我尝试插入我的自定义持续时间,那么

 let startTime = CMTimeMake(Int64(CMTimeGetSeconds(videoRangeSlider.timeRange.start) * 1000)   , 1000)
        let dura = CMTimeGetSeconds(videoRangeSlider.timeRange.end) - CMTimeGetSeconds(videoRangeSlider.timeRange.start)
let duration = CMTimeMake( Int64(dura * 1000)  , 1000)
t timeRange = CMTimeRangeMake(startTime,duration)
 originalVideoTrack.timeRange
        do {
                try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: timeRange.start)

        } catch {
            print("problem")
        }

我已将atTime更改为kCGTimeZero,无法使用

有什么建议吗?

更新

示例timeRange

CMTimeRange(start: __C.CMTime(value: 2216, timescale: 1000, flags: __C.CMTimeFlags(rawValue: 1), epoch: 0), duration: __C.CMTime(value: 2880, timescale: 1000, flags: __C.CMTimeFlags(rawValue: 1), epoch: 0))

1 个答案:

答案 0 :(得分:0)

<强>解决。享受

将完整时间范围插入

 let timeRange = originalVideoTrack.timeRange
        do {
            try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: kCMTimeZero)
        } catch {

        }

而且,对于您的customRange,请执行以下操作

    exportSession?.timeRange = customRange