Closed MorningStarJ closed 4 years ago
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就不对了。。。
AVAssetTrackResource 设置selectedTimeRange后生成的trackItem, 或是生成的playeritem 还是asset的全部资源,未裁剪到选中时间,以下是代码示例-