导出带有自定义 CMTimeRange 问题的视频
Export video with custom CMTimeRange issue
我想我漏掉了什么。我有一个滑块可以更改资产持续时间以及开始时间。
如果我要导出完整时长的视频,如
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,不行
有什么建议吗?
更新
示例时间范围
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))
已解决。享受
将完整的时间范围插入为
let timeRange = originalVideoTrack.timeRange
do {
try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: kCMTimeZero)
} catch {
}
然后,对于您的 customRange
,请执行以下操作
exportSession?.timeRange = customRange
我想我漏掉了什么。我有一个滑块可以更改资产持续时间以及开始时间。 如果我要导出完整时长的视频,如
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,不行
有什么建议吗?
更新
示例时间范围
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))
已解决。享受
将完整的时间范围插入为
let timeRange = originalVideoTrack.timeRange
do {
try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: kCMTimeZero)
} catch {
}
然后,对于您的 customRange
,请执行以下操作
exportSession?.timeRange = customRange