Objective c 导出带有自定义CMTimeRange问题的视频
我想我错过了什么。我有一个滑块,可以更改资产持续时间和开始时间。 如果我以完整的持续时间导出视频,如Objective c 导出带有自定义CMTimeRange问题的视频,objective-c,swift,range,avasset,cmtime,Objective C,Swift,Range,Avasset,Cmtime,我想我错过了什么。我有一个滑块,可以更改资产持续时间和开始时间。 如果我以完整的持续时间导出视频,如 let timeRange = originalVideoTrack.timeRange do { try videoTrack.insertTimeRange(timeRange, ofTrack: originalVideoTrack, atTime: kCMTimeZero) } catch { } 一切正常。
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")
}
我也将时间更改为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
videoRangeSlider.timeRange.start
aCMTime
是否键入?@J.Wang嘿,Wang,是的。然后您可以在atTime
中直接使用它,对吗?您还可以使用CMTimeSubtract
获得两个CMTime
@J.Wang的持续时间。我做了,也没做。VideoRangeSlaider.timeRange是资产当前的时间范围,但它仍然有效。…@J.Wang我编辑了我的问题,添加了自定义CMTimeRange示例