selectedTimeRange 问题
MorningStarJ opened this issue · comments
AVAssetTrackResource 设置selectedTimeRange后生成的trackItem, 或是生成的playeritem 还是asset的全部资源,未裁剪到选中时间,以下是代码示例-
let resource = AVAssetTrackResource(asset: model.asset)// model.asset duration 7秒
resource.setSpeed(model.speed)
if let startTime = model.startTime, let endTime = model.endTime {
let startTime = CMTime(seconds: startTime, preferredTimescale: model.asset.duration.timescale)
let endTime = CMTime(seconds: endTime, preferredTimescale: model.asset.duration.timescale)
let timeRange = CMTimeRange(start: startTime, end: endTime)
print(CMTimeGetSeconds(timeRange.start),
CMTimeGetSeconds(timeRange.end),
CMTimeGetSeconds(timeRange.duration))// 0, 4, 4
resource.selectedTimeRange = CMTimeRange(start: startTime, end: endTime)
}
let trackItem = TrackItem(resource: resource)// 这里打印trackItem.duration 还是7秒
trackItem.videoConfiguration.transform = model.transform
trackItem.videoConfiguration.contentMode = .aspectFit
timeline.videoChannel.append(trackItem)
timeline.audioChannel.append(trackItem)`
try! Timeline.reloadVideoStartTime(providers: timeline.videoChannel)
try! Timeline.reloadAudioStartTime(providers: timeline.audioChannel)
let playerItem = CompositionGenerator(timeline: timeline).buildPlayerItem()//这里playitem.duration 还是7 秒
发现是先设置区间在设置速度即可。。。设置速度的时候取了selectedTimeRange计算,先设置速度scaledDuration就不对了。。。