美摄SDK For iOS
3.14.0
|
轨道,容纳片段的实体 更多...
#import <NvsTrack.h>
构造函数 | |
(int64_t) | - changeInPoint:newInPoint: |
修改片段在时间线上的入点.如果clip没有此函数授权返回当前的inpoint,newInpoint如果小于前一个clip的outpoint,直接返回前一个clip的outpoint,如果当前clip是第0个clip,则newInPoint最小为0。此函数内部会根据newinpoint计算出一个新的trimIn,并修改clip的trimIn,如果新的trimIn小于0时会返回trimIn为0时对应的Inpoint值,如果newinpoint大于trimOut则返回trimOut-1对应的inPoint值 更多... | |
(int64_t) | - changeOutPoint:newOutPoint: |
修改片段在时间线上的出点,如果clip没有此函数授权返回当前的outpoint,如果newOutpoint小于clip的outPoint则newOutPoint不会小于inpoint+1,如果clip后面还有nextclip,则newOutPoint不会大于nextClip的inpoint,当前clip如果是最后一个clip最终outpoint的就是timeline的duration,如果newOutPoint大于clip的outpoint则视频末尾会静帧。此函数内部会根据newOutpoint计算出一个新的trimOut,如果clip的inpoint不等于下一个clip的outpoint会移除中间的转场. 更多... | |
(BOOL) | - splitClip:splitPoint: |
分割指定的片段 更多... | |
(BOOL) | - removeClip:keepSpace: |
移除指定的片段,主题的片头片尾是不允许移除的 更多... | |
(BOOL) | - removeRange:endTimelinePos:keepSpace: |
移除指定的区间内的所有片段,如果片段只有部分与该区间重合则调整其时间线入点或者出点,如果片段包含主题片头片尾部分,会移除失败,startTimelinePos < 0 或者 endTimelinePos <= startTimelinePos 也会移除失败 更多... | |
(BOOL) | - moveClip:destClipIndex: |
移动指定的片段,主题的片头片尾不能移动,clipIndex和destClipIndex不能于等于clipcount 更多... | |
(BOOL) | - moveClip:targetTimelinePos:isInsertTarget:keepSpace: |
移动指定的片段到输入的位置,clipIndex大于等于clipcount会移除失败,targetTimelinePos等于0时,会被移动到0的位置,主题的片头片尾不能被移动。 更多... | |
(BOOL) | - removeAllClips |
移除所有片段 更多... | |
(void) | - setVolumeGain:rightVolumeGain: |
设置音量,最终的音量值是track音量乘以clip音量 更多... | |
(void) | - getVolumeGain:rightVolumeGain: |
获取音量,最终的音量值是track音量乘以clip音量 更多... | |
![]() | |
(void) | - setAttachment:forKey: |
给NvsObject对象添加附件,用来标识NvsObject的对象或者用于其他用途 更多... | |
(void) | - setTemplateAttachment:forKey: |
为NvsObject对象添加模板资源的附加数据,用来标识NvsObject的模板数据 更多... | |
(NSObject *) | - getAttachment: |
获取已经添加的附件 更多... | |
(NSString *) | - getTemplateAttachment: |
获取NvsObject的模板资源附件 更多... | |
属性 | |
NvsTrackType | type |
轨道类型 更多... | |
unsigned int | index |
轨道索引 更多... | |
int64_t | duration |
轨道长度(单位微秒) 更多... | |
unsigned int | clipCount |
轨道上的片段数量 更多... | |
轨道,容纳片段的实体
轨道可视作片段的集合,分为音频轨道(Audio Track)和视频轨道(Video Track)。创建时间线实例后,可添加或移除多条轨道。在每一条轨道上,可以添加多个要编辑的视音频片段,并对片段进行音量设置,也可以进行移除和位置移动。
- (int64_t) changeInPoint: | (unsigned int) | clipIndex | |
newInPoint: | (int64_t) | newInPoint | |
修改片段在时间线上的入点.如果clip没有此函数授权返回当前的inpoint,newInpoint如果小于前一个clip的outpoint,直接返回前一个clip的outpoint,如果当前clip是第0个clip,则newInPoint最小为0。此函数内部会根据newinpoint计算出一个新的trimIn,并修改clip的trimIn,如果新的trimIn小于0时会返回trimIn为0时对应的Inpoint值,如果newinpoint大于trimOut则返回trimOut-1对应的inPoint值
clipIndex | 片段索引 |
newInPoint | 时间线上新的入点(单位微秒) |
- (int64_t) changeOutPoint: | (unsigned int) | clipIndex | |
newOutPoint: | (int64_t) | newOutPoint | |
修改片段在时间线上的出点,如果clip没有此函数授权返回当前的outpoint,如果newOutpoint小于clip的outPoint则newOutPoint不会小于inpoint+1,如果clip后面还有nextclip,则newOutPoint不会大于nextClip的inpoint,当前clip如果是最后一个clip最终outpoint的就是timeline的duration,如果newOutPoint大于clip的outpoint则视频末尾会静帧。此函数内部会根据newOutpoint计算出一个新的trimOut,如果clip的inpoint不等于下一个clip的outpoint会移除中间的转场.
clipIndex | 片段索引 |
newOutPoint | 新时间线上的出点(单位微秒) |
- (void) getVolumeGain: | (float *) | leftVolumeGain | |
rightVolumeGain: | (float *) | rightVolumeGain | |
获取音量,最终的音量值是track音量乘以clip音量
leftVolumeGain | 输出音量的左声道 |
rightVolumeGain | 输出音量的右声道 |
- (BOOL) moveClip: | (unsigned int) | clipIndex | |
destClipIndex: | (unsigned int) | destClipIndex | |
移动指定的片段,主题的片头片尾不能移动,clipIndex和destClipIndex不能于等于clipcount
clipIndex | 片段索引 |
destClipIndex | 片段移动的目标索引 |
- (BOOL) moveClip: | (unsigned int) | clipIndex | |
targetTimelinePos: | (int64_t) | targetTimelinePos | |
isInsertTarget: | (BOOL) | isInsertTarget | |
keepSpace: | (BOOL) | keepSpace | |
移动指定的片段到输入的位置,clipIndex大于等于clipcount会移除失败,targetTimelinePos等于0时,会被移动到0的位置,主题的片头片尾不能被移动。
clipIndex | 需要移动的片段索引 |
targetTimelinePos | 片段移动到的时间线位置,单位为微秒 |
isInsertTarget | true表示采用插入的方式移动片段,若目标位置有片段则将该片段截断然后插入要移动的片段,false表示采用覆盖的方式移动片段,若目标位置有片段则将要移动的片段覆盖到该片段所在区域。 |
keepSpace | 片段移动过程中是否保留空间,保留的空间为黑色片段。 |
- (BOOL) removeAllClips |
- (BOOL) removeClip: | (unsigned int) | clipIndex | |
keepSpace: | (BOOL) | keepSpace | |
移除指定的片段,主题的片头片尾是不允许移除的
clipIndex | 片段索引 |
keepSpace | 片段移除后,是否保留该片段在轨道上的空间。值为true则保留,false则不保留。 |
- (BOOL) removeRange: | (int64_t) | startTimelinePos | |
endTimelinePos: | (int64_t) | endTimelinePos | |
keepSpace: | (BOOL) | keepSpace | |
移除指定的区间内的所有片段,如果片段只有部分与该区间重合则调整其时间线入点或者出点,如果片段包含主题片头片尾部分,会移除失败,startTimelinePos < 0 或者 endTimelinePos <= startTimelinePos 也会移除失败
startTimelinePos | 区间的起始时间线位置(单位微秒) |
endTimelinePos | 区间的结束时间线位置(单位微秒) |
keepSpace | 区间内的片段移除后,是否保留该区间所占轨道上的空间。值为true则保留,false则不保留 |
- (void) setVolumeGain: | (float) | leftVolumeGain | |
rightVolumeGain: | (float) | rightVolumeGain | |
设置音量,最终的音量值是track音量乘以clip音量
leftVolumeGain | 设置音量的左声道,取值范围[0,4)。 |
rightVolumeGain | 设置音量的右声道,取值范围[0,4)。 |
- (BOOL) splitClip: | (unsigned int) | clipIndex | |
splitPoint: | (int64_t) | splitPoint | |
分割指定的片段
clipIndex | 片段索引 |
splitPoint | 分割点(单位微秒)取值范围是(clip.inpoint, clip.outpoint),超出取值范围会切割失败。 |
分割片段,即对指定索引值的片段进行分割而变为两个片段的操作,对应的轨道上片段的索引值也会进行相应变化。
示例如下:
上图中轨道上有三个视频片段C1、C2、C3,对片段C2进行分割,分割后的片段分别命名为C2和C4。通过获取轨道上当前片段数来判定是否分割成功,分割成功则C2和C4索引值对应为1和2。
结果如下图:
|
readatomicassign |
轨道上的片段数量
|
readatomicassign |
轨道长度(单位微秒)
|
readatomicassign |
轨道索引
|
readatomicassign |
轨道类型