应用全部
调节应用全部通过循环执行单次应用来实现,导致重复刷新project,造成卡顿;
解决方案:对所有片段修改属性后,执行一次刷新;
同一个对象赋值给多个片段,导致修改单个片段,其他片段也被修改;
解决方案:cloneObject来赋值,
命名规范:不应该命名 ***not****(autoSubtitleNotApplyAll),否定命名的方式不符合一般人理解,后期维护、阅读也很麻烦,如果要修改默认值,可以在构造函数内对变量重新做初始化
关于素材在project/预览中的尺寸问题
一个视频片段在预览框内的宽高:
PreviewWidth = AssetWidth * AssetScale
PreviewHeight = AssetHeight * AssetScale
AssetScale = KeyFrameScale * ScaleInPreview * fitFillScale
参数说明:
AssetScale: 素材缩放倍数
AssetWidth/AssetHeight: 素材本身的宽高
KeyFrameScale: 关键帧缩放参数
fitFillScale:素材撑满 Project 的模式 fit/fill 产生的缩放参数,由于画中画没有撑满逻辑,所以对于画中画该参数为 1
ScaleInPreview:project 适配预览视图产生的缩放参数
素材在主轨 、画中画互切 大小保持一致;
主轨素材在project宽度:
MainTrackAssetWidthInProject =
MainTrackAssetWidth * MainTrackKeyFrameScale * fitFillScale
主轨素材在project宽度与project宽度比例:
BeforeTransformRation = MainTrackAssetWidthInProject /BeforeTransformProjectWidth
画中画素材在project宽度:
SubTrackAssetWidthInProject = SubTrackAssetWidth * SubTrackKeyFrameScale
主轨素材在project宽度与project宽度比例:
AfterTransformRation = SubTrackAssetWidthInProject/AfterTransformProjectWidth
核心逻辑是切换前后素材在project内的显示的宽度和project的宽比列保持一致,两个变量应该相等:
BeforeTransformRation = AfterTransformRation
对于主轨转画中画 是已知MainTrackKeyFrameScale计算SubTrackKeyFrameScale
对于画中画转主轨 是已知SubTrackKeyFrameScale计算MainTrackKeyFrameScale
参数说明:
MainTrackKeyFrameScale:主轨关键帧缩放参数
SubTrackKeyFrameScale:画中画关键帧缩放参数
BeforeTransformProjectWidth:转换前project宽度
AfterTransformProjectWidth:转换前后project宽度