美摄SDK For iOS
3.14.0
|
时间线,编辑场景的时间轴实体 更多...
#import <NvsTimeline.h>
属性 | |
NvsVideoResolution | videoRes |
视频解析度(图像宽高及横纵比) 更多... | |
NvsAudioResolution | audioRes |
音频解析度(采样率、采样格式及通道数) 更多... | |
NvsRational | videoFps |
视频帧率 更多... | |
int64_t | duration |
时间线的时长(单位微秒) 更多... | |
int64_t | audioFadeOutDuration |
音频淡出时长(单位微秒) 更多... | |
时间线,编辑场景的时间轴实体
时间线由轨道组成,可视作一系列音视频轨道的集合。在时间线上可添加或者移除多条视频轨道和音轨轨道,多条轨道之间是相互叠加合成的关系。 当编辑视频时,根据需要还会添加上时间线字幕,主题以及相应的动画贴纸,以制作出美观的视频。另外,添加素材资源包(主题包,动画贴纸包,字幕样式包,时间线特效包等), 都得先安装,安装成功后获取packageId才能使用,而内建时间线特效(builtin)只需获取特效名称即可使用。
- (NvsTimelineAnimatedSticker *) addAnimatedSticker: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
animatedStickerPackageId: | (NSString *) | animatedStickerPackageId | |
在时间线上添加动画贴纸
inPoint | 动画贴纸在时间线上的入点(单位微秒) |
duration | 动画贴纸的显示时长(单位微秒) |
animatedStickerPackageId | 动画贴纸包Id |
- (NvsTimelineVideoFx *) addBuiltinTimelineVideoFx: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
videoFxName: | (NSString *) | videoFxName | |
在时间线上添加内嵌的时间线视频特效
inPoint | 时间线视频特效在时间线上的入点(单位微秒) |
duration | 时间线视频特效显示的时长(单位微秒) |
videoFxName | 内嵌的时间线视频特效名字 |
- (NvsTimelineCaption *) addCaption: | (NSString *) | captionText | |
inPoint: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
captionStylePackageId: | (NSString *) | captionStylePackageId | |
在时间线上添加字幕
captionText | 字幕的文字 |
inPoint | 字幕在时间线上的起点(单位微秒) |
duration | 字幕显示时长(单位微秒) |
captionStylePackageId | 字幕样式包Id,不存在的话,可以传空字符串或者nil |
- (NvsTimelineCompoundCaption *) addCompoundCaption: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
compoundCaptionPackageId: | (NSString *) | compoundCaptionPackageId | |
在时间线上添加字幕
captionText | 字幕的文字 |
inPoint | 字幕在时间线上的起点(单位微秒) |
duration | 字幕显示时长(单位微秒) |
captionStylePackageId | 字幕样式包Id,不存在的话,可以传空字符串或者nil |
- (NvsTimelineAnimatedSticker *) addCustomAnimatedSticker: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
animatedStickerPackageId: | (NSString *) | animatedStickerPackageId | |
customImagePath: | (NSString *) | customImagePath | |
在时间线上添加自定义动画贴纸
inPoint | 自定义动画贴纸在时间线上的入点(单位微秒) |
duration | 自定义动画贴纸的显示时长(单位微秒) |
animatedStickerPackageId | 自定义动画贴纸包Id |
customImagePath | 自定义动画贴纸图像路径(可以是jpg、png图像,或者美摄sdk内部支持的动态caf格式图像) |
- (NvsTimelineAnimatedSticker *) addCustomPanoramicAnimatedSticker: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
animatedStickerPackageId: | (NSString *) | animatedStickerPackageId | |
customImagePath: | (NSString *) | customImagePath | |
在时间线上添加自定义全景图动画贴纸
inPoint | 动画贴纸在时间线上的起点(单位微秒) |
duration | 动画贴纸的显示时长(单位微秒) |
animatedStickerPackageId | 动画贴纸资源包ID |
customImagePath | 自定义动画贴纸图像路径(可以是jpg、png图像,或者美摄sdk内部支持的动态caf格式图像) |
- (NvsTimelineVideoFx *) addCustomTimelineVideoFx: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
customVideoFxRender: | (id< NvsCustomVideoFxRenderer >) | customVideoFxRender | |
在时间线上添加自定义时间线视频特效
inPoint | 时间线视频特效在时间线上的入点(单位微秒) |
duration | 时间线视频特效的时长(单位微秒) |
customVideoFxRender | 用户实现的自定义视频特效渲染器接口 |
- (NvsTimelineCaption *) addModularCaption: | (NSString *) | captionText | |
inPoint: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
在时间线上添加模块字幕
captionText | 字幕的文字 |
inPoint | 字幕在时间线上的起点(单位微秒) |
duration | 字幕显示时长(单位微秒) |
- (NvsTimelineVideoFx *) addPackagedTimelineVideoFx: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
videoFxPackageId: | (NSString *) | videoFxPackageId | |
在时间线上添加资源包形式的时间线视频特效
inPoint | 时间线视频特效在时间线上的入点(单位微秒) |
duration | 时间线视频特效显示的时长(单位微秒) |
videoFxPackageId | 时间线视频特效资源包Id |
- (NvsTimelineAnimatedSticker *) addPanoramicAnimatedSticker: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
animatedStickerPackageId: | (NSString *) | animatedStickerPackageId | |
在时间线上添加全景图动画贴纸
inPoint | 动画贴纸在时间线上的起点(单位微秒) |
duration | 动画贴纸的显示时长(单位微秒) |
animatedStickerPackageId | 动画贴纸资源包ID |
- (NvsTimelineCaption *) addPanoramicCaption: | (NSString *) | captionText | |
inPoint: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
captionStylePackageId: | (NSString *) | captionStylePackageId | |
在时间线上添加全景图字幕
captionText | 字幕的文字 |
inPoint | 字幕在时间线上的入点(单位微秒) |
duration | 字幕的显示时长(单位微秒) |
captionStylePackageId | 字幕样式包Id,不存在的话,可以传空字符串或者nil |
- (NvsTimelineCompoundCaption *) addPanoramicCompoundCaption: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
compoundCaptionPackageId: | (NSString *) | compoundCaptionPackageId | |
在时间线上添加VR复合字幕
inPoint | 字幕在时间线上的起点(单位微秒) |
duration | 字幕显示时长(单位微秒) |
captionStylePackageId | 字幕样式包Id,不存在的话,可以传空字符串或者null |
- (NvsTimelineGraphCompositor *) addTimelineGraphCompositor: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
graphDescStr: | (NSString *) | graphDescStr | |
在时间线上添加一个图式合成器
inPoint | 图式合成器在时间线上的入点(单位微秒) |
duration | 图式合成器的时长(单位微秒) |
graphDescStr | 图式合成器的描述信息 |
- (NvsTimelineGraphCompositor *) addTimelineGraphCompositor: | (int64_t) | inPoint | |
duration: | (int64_t) | duration | |
graphDescStr: | (NSString *) | graphDescStr | |
buddyTrackIndex: | (int) | buddyTrackIndex | |
在时间线上添加一个图式合成器, 从3.12.0开启废弃
inPoint | 图式合成器在时间线上的入点(单位微秒) |
duration | 图式合成器的时长(单位微秒) |
graphDescStr | 图式合成器的描述信息 |
buddyTrackIndex | 伴侣视频帧轨道序号 |
- (bool) addWatermark: | (NSString *) | watermarkFilePath | |
displayWidth: | (int) | displayWidth | |
displayHeight: | (int) | displayHeight | |
opacity: | (float) | opacity | |
position: | (int) | position | |
marginX: | (int) | marginX | |
marginY: | (int) | marginY | |
添加水印
watermarkFilePath | 水印文件的路径,须为PNG、JPG、CAF文件 |
displayWidth | 水印在timeline中显示的宽度,为0则使用图片文件的宽度 |
displayHeight | 水印在timeline中显示的高度,为0则使用图片文件的高度 |
opacity | 水印的不透明度, 取值范围 0~1 |
position | 水印的位置,请参见 NvsTimelineWatermarkPosition |
marginX | 水印在X方向的边距 |
marginY | 水印在Y方向的边距 |
- (NvsAudioTrack *) appendAudioTrack |
- (NvsVideoTrack *) appendVideoTrack |
- (BOOL) applyTheme: | (NSString *) | themeId |
对当前时间线应用主题(主题是相对于整个时间线而言)
对于主题,可能包含有片头或片尾,或片头片尾都有,也有可能都没有。应用含有片头或片尾的主题时,片头和片尾都被视作一个clip,从而导致clip数量的增加。使用此接口时请注意判断片段的数量。
themeId | 主题包裹的id(如果themeId为空字符串或者nil,将会移除当前的主题) |
- (bool) applyThemeTemplate: | (NSString *) | templateId |
应用自适应时长模版.
templateId | 模板uuid |
- (unsigned int) audioTrackCount |
- (BOOL) changeVideoBitDepth: | (NvsVideoResolutionBitDepth) | newBitDepth |
改变时间线的视频位深度
newBitDepth | 新的位深度 |
- (BOOL) changeVideoSize: | (int) | videoWidth | |
videoHeight: | (int) | videoHeight | |
改变时间线的视频尺寸
注意:如果当前时间线已经被连接到了一个SurfaceTexture上,那么请在改变时间线的视频尺寸之前 先断开当前时间线与SurfaceTexture的连接,改变视频尺寸后再重现连接那个SurfaceTexture!
videoWidth | 新的视频宽度(目前要求传入的图像宽度值是4的倍数) |
videoHeight | 新的视频高度(目前要求传入的图像高度值是2的倍数) |
- (unsigned int) creationFlags |
获取创建timeline的标志
- (void) deleteWatermark |
删除已添加的水印
- (void) enableRenderOrderByZValue: | (BOOL) | enable |
开启使用Z值作为渲染顺序 重要提示:参与排序的有时间线字幕,复合字幕,模块字幕,动画贴纸和时间线滤镜 如果同一种类型中的Z值是相同的,和没有开启这个属性的排序方式是一致的 如果不同类型的Z值是相同的,排列顺序为:时间线滤镜->动画贴纸->时间线字幕(包含模块字幕)->复合字幕
enable | 是否开启 |
- (NSArray *) getAnimatedStickersByTimelinePosition: | (int64_t) | timelinePos |
根据时间线上的位置获得动画贴纸列表
timelinePos | 时间线上的位置(单位微秒) |
- (NvsAudioTrack *) getAudioTrackByIndex: | (unsigned int) | trackIndex |
通过索引获取音频轨道
trackIndex | 音频轨道索引 |
- (NSArray<NvsCaptionBoundingVerticesInfo*>*) getCaptionsBoundingVerticesRecursively: | (NvsBoundingType) | boundingType | |
timelinePosition: | (int64_t) | timelinePosition | |
递归获取该时间线下所有字幕的外框顶点坐标(不包含复合字幕)
timelinePostion | 当前时间线时间。 |
- (NSArray *) getCaptionsByTimelinePosition: | (int64_t) | timelinePos |
根据时间线上的位置获得字幕列表
timelinePos | 时间线上的位置(单位微秒) |
- (NSArray<NvsTimelineCompoundCaption*> *) getCompoundCaptionsByTimelinePosition: | (int64_t) | timelinePos |
根据时间线上的位置获得复合字幕列表
timelinePos | 时间线上的复合位置(单位微秒) |
- (int) getCreationFlags |
获取创建timeline的flag NvsCreateTimelineTypeFlag
- (NSString *) getCurrentThemeId |
- (NvsTimelineAnimatedSticker *) getFirstAnimatedSticker |
获取时间线上第一个动画贴纸
- (NvsTimelineCaption *) getFirstCaption |
- (NvsTimelineCompoundCaption *) getFirstCompoundCaption |
- (NvsTimelineGraphCompositor *) getFirstTimelineGraphCompositor |
获取时间线上第一个图式合成器
- (NvsTimelineVideoFx *) getFirstTimelineVideoFx |
获取时间线上第一个时间线视频特效
- (NvsTimelineAnimatedSticker *) getLastAnimatedSticker |
- (NvsTimelineCaption *) getLastCaption |
获取时间线上的最后一个字幕
- (NvsTimelineCompoundCaption *) getLastCompoundCaption |
- (NvsTimelineGraphCompositor *) getLastTimelineGraphCompositor |
获取时间线上最后一个图式合成器
- (NvsTimelineVideoFx *) getLastTimelineVideoFx |
获取时间线上最后一个时间线视频特效
- (NvsTimelineAnimatedSticker *) getNextAnimatedSticker: | (NvsTimelineAnimatedSticker *) | animatedSticker |
- (NvsTimelineCaption *) getNextCaption: | (NvsTimelineCaption *) | caption |
- (NvsTimelineCompoundCaption *) getNextCompoundCaption: | (NvsTimelineCompoundCaption *) | caption |
获取时间线上的当前复合字幕的前一个复合字幕
caption | 时间线上当前复合字幕对象 |
- (NvsTimelineGraphCompositor *) getNextTimelineGraphCompositor: | (NvsTimelineGraphCompositor *) | graphCompositor |
获取时间线上某个图式合成器的下一个图式合成器
graphCompositor | 图式合成器对象 |
- (NvsTimelineVideoFx *) getNextTimelineVideoFx: | (NvsTimelineVideoFx *) | videoFx |
获取时间线上某个时间线视频特效的下一个时间线视频特效
videoFx | 时间线视频特效对象 |
- (NSArray *) getPlaybackRateControl |
- (NvsTimelineAnimatedSticker *) getPrevAnimatedSticker: | (NvsTimelineAnimatedSticker *) | animatedSticker |
- (NvsTimelineCaption *) getPrevCaption: | (NvsTimelineCaption *) | caption |
- (NvsTimelineCompoundCaption *) getPrevCompoundCaption: | (NvsTimelineCompoundCaption *) | caption |
获取时间线上的当前复合字幕的前一个复合字幕
caption | 时间线上当前复合字幕对象 |
- (NvsTimelineGraphCompositor *) getPrevTimelineGraphCompositor: | (NvsTimelineGraphCompositor *) | graphCompositor |
获取时间线上某个图式合成器的前一个图式合成器
graphCompositor | 图式合成器 |
- (NvsTimelineVideoFx *) getPrevTimelineVideoFx: | (NvsTimelineVideoFx *) | videoFx |
获取时间线上某个时间线视频特效的前一个时间线视频特效
videoFx | 时间线视频特效对象 |
- (void) getThemeMusicVolumeGain: | (float *) | leftVolumeGain | |
rightVolumeGain: | (float *) | rightVolumeGain | |
- (NvsTimelineGraphCompositor *) getTimelineGraphCompositorByTimelinePosition: | (int64_t) | timelinePos |
根据时间线上的位置获得图式合成器
timelinePos | 时间线上的位置(单位微秒) |
- (NSArray *) getTimelineVideoFxByTimelinePosition: | (int64_t) | timelinePos |
根据时间线上的位置获得时间线视频特效列表
timelinePos | 时间线上的位置(单位微秒) |
- (NSArray<NvsClipBoundingVerticesInfo*>*) getVideoClipBoundingVerticesRecursively: | (int64_t) | timelinePosition |
递归获取该时间线下所有片段的外框顶点坐标
timelinePostion | 当前时间线时间。 |
- (NvsVideoTrack *) getVideoTrackByIndex: | (unsigned int) | trackIndex |
通过索引获取视频轨道
trackIndex | 视频轨道索引 |
- (NvsAudioTrack *) insertAudioTrack: | (unsigned int) | clipIndex |
插入音频轨道
trackIndex | 插入后轨道的索引,如果传入小于0或者大于当前轨道数量的index,会在当前轨道数量的最后插入 |
- (NvsVideoTrack *) insertVideoTrack: | (unsigned int) | clipIndex |
插入视频轨道
trackIndex | 插入后轨道的索引,如果传入小于0或者大于当前轨道数量的index,会在当前轨道数量的最后插入 |
- (BOOL) isRenderOrderByZValueEnabled |
是否开启使用Z值作为渲染顺序
- (BOOL) moveVideoTrackIndex: | (unsigned int) | srcTrackIndex | |
dstTrackIndex: | (unsigned int) | dstTrackIndex | |
移动视频轨道。移动之后,所有视频轨道会从0开始重新设置index
srcTrackIndex | 原视频轨道索引 |
dstTrackIndex | 目标视频轨道索引 |
- (NvsTimelineAnimatedSticker *) removeAnimatedSticker: | (NvsTimelineAnimatedSticker *) | animatedSticker |
移除时间线上的动画贴纸
animatedSticker | 要移除的动画贴纸对象 |
- (BOOL) removeAudioTrack: | (unsigned int) | trackIndex |
移除音频轨道
trackIndex | 音频轨道索引 |
- (NvsTimelineCaption *) removeCaption: | (NvsTimelineCaption *) | caption |
移除时间线上的字幕
caption | 要移除的时间线字幕对象 |
- (NvsTimelineCompoundCaption *) removeCompoundCaption: | (NvsTimelineCompoundCaption *) | caption |
移除时间线上的复合字幕
caption | 要移除的时间线复合字幕对象 |
- (void) removeCurrentTheme |
- (void) removeTimelineEndingLogo |
移除已添加的timeline结尾的logo特效
- (NvsTimelineGraphCompositor *) removeTimelineGraphCompositor: | (NvsTimelineGraphCompositor *) | graphCompositor |
移除时间线上的图式合成器
graphCompositor | 要移除的图式合成器对象 |
- (NvsTimelineVideoFx *) removeTimelineVideoFx: | (NvsTimelineVideoFx *) | videoFx |
移除时间线上的时间线视频特效
videoFx | 要移除的时间线视频特效对象 |
- (BOOL) removeVideoTrack: | (unsigned int) | trackIndex |
移除视频轨道
trackIndex | 视频轨道索引 |
- (void) setCaptionBoundingRectInActualMode: | (BOOL) | isActualBoundingRect |
设置字幕的边框为文字的实际包络大小
isActualBoundingRect | 是否显示实际包络大小 |
- (void) setPlaybackRateControl: | (NSArray *) | arrayPlaybackRateControlRegion |
- (void) setThemeMusicVolumeGain: | (float) | leftVolumeGain | |
rightVolumeGain: | (float) | rightVolumeGain | |
设置主题音乐音量
leftVolumeGain | 左声道,取值范围[0,8),建议是[0,3],如果超过3,可能会破音 |
rightVolumeGain | 右声道,取值范围[0,8),建议是[0,3],如果超过3,可能会破音 |
- (void) setThemeTitleCaptionText: | (NSString *) | text |
- (void) setThemeTrailerCaptionText: | (NSString *) | text |
- (bool) setTimelineEndingLogo: | (NSString *) | logoFilePath | |
displayWidth: | (unsigned int) | displayWidth | |
displayHeight: | (unsigned int) | displayHeight | |
centerX: | (int) | centerX | |
centerY: | (int) | centerY | |
设置timeline结尾的Logo特效,时长是1s钟
logoFilePath | logo文件的路径,须为PNG、JPG、CAF文件 |
displayWidth | logo在timeline中显示的宽度,为0则使用图片文件的宽度 |
displayHeight | logo在timeline中显示的高度,为0则使用图片文件的高度 |
centerX | logo中心点在X方向的位置 |
centerY | logo中心点在Y方向的位置 |
- (bool) setWatermarkOpacity: | (float) | opacity |
- (unsigned int) videoTrackCount |
|
readwritenonatomicassign |
音频淡出时长(单位微秒)
|
readatomicassign |
音频解析度(采样率、采样格式及通道数)
|
readatomicassign |
时间线的时长(单位微秒)
|
readatomicassign |
视频帧率
|
readatomicassign |
视频解析度(图像宽高及横纵比)