短视频 SDK iOS(画中画)

通过画中画相关接口可以在短视频编辑中插入画中画(PIP)。这里说明了画中画功能相关接口类和方法,包括 TAVEditor、ITAVPipManager、TAVMediaPipItem 的使用,涵盖创建、加载和移除画中画操作。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

一、相关接口类

接口类名 描述
TAVEditor SDK 操作入口类。
ITAVPipManager 画中画操作接口类。
TAVMediaPipItem 画中画数据模型类。
ITAVPipViewDataSource 自定义画中画视图的数据源协议。
TAVPipContextObserver 画中画视图变化观察者协议。

二、接口方法汇总

方法 参数 返回值 说明
setPipViewDataSource: dataSource:遵守 ITAVPipViewDataSource 的对象。 void 设置自定义画中画视图数据源。
createPipItem:mediaType: filePath:画中画路径。mediaType:0 为视频,1 为图片。 TAVMediaPipItem * 创建画中画对象。
loadPip: pipItem:画中画对象。 void 加载画中画。
removePip: pipItem:画中画对象。 void 移除指定画中画。
removeCurrentPip – void 移除当前画中画。
removeAllPip – void 移除所有画中画。
getAllPipItems – NSArray<TAVMediaPipItem *> * 获取所有画中画对象。
getCurrentPipItem – TAVMediaPipItem * 获取当前画中画对象。
addPipObserver: / removePipObserver: observer:观察者。 void 添加/移除画中画变化监听。
activePip: / resignPip: pipItem:画中画对象。 void 激活/注销画中画。
resignCurrentPip – void 注销当前画中画。
fetchPipView: pipItem:画中画对象。 TAVPipView * 取画中画对应的视图。

三、获取画中画操作接口

/// 获取画中画操作类- (id<ITAVPipManager>)getPipManager;

四、创建画中画对象

/// 创建画中画/// – Parameters:/// – filePath: 画中画路径/// – mediaType: 资源类型,0为视频,1为图片- (TAVMediaPipItem *)createPipItem:(NSString *)filePath mediaType:(NSInteger)mediaType;

创建后通过 timeRange 设置画中画的显示时间区间。

五、加载画中画

/// 添加画中画/// – Parameter pipItem: 画中画对象- (void)loadPip:(TAVMediaPipItem *)pipItem;

六、移除画中画

/// 删除指定画中画- (void)removePip:(TAVMediaPipItem *)pipItem;/// 删除当前画中画- (void)removeCurrentPip;/// 删除所有画中画- (void)removeAllPip;

七、监听画中画变化

TAVPipContextObserver(协议方法全部为 @optional)用于监听画中画视图的显示状态变化:

回调 参数 说明
didShowPipView: TAVPipView * 画中画视图已显示。
didHidePipView: TAVPipView * 画中画视图已隐藏。
didRemovePipView: TAVPipView * 画中画视图已移除。
didActivePipView: TAVPipView * 画中画视图被激活。
didResignPipView: TAVPipView * 画中画视图被注销。

[pipManager addPipObserver:self];// 不再需要时注销[pipManager removePipObserver:self];

八、自定义画中画视图

@protocol ITAVPipViewDataSource <NSObject>/// 根据画中画对象返回画中画视图,可继承自 TAVPipView 自定义控件/// 不实现默认使用 SDK 自带的- (TAVPipView *)pipViewWithPipItem:(TAVMediaPipItem *)pipItem;@end

[pipManager setPipViewDataSource:self];#pragma mark – ITAVPipViewDataSource- (TAVPipView *)pipViewWithPipItem:(TAVMediaPipItem *)pipItem { return [[MyPipView alloc] initWithPipItem:pipItem];}

九、使用示例

// 获取画中画操作接口id<ITAVPipManager> pipManager = [editor getPipManager];// 创建画中画对象(0为视频 / 1为图片)TAVMediaPipItem *pipItem = [pipManager createPipItem:@"/path/to/video.mp4" mediaType:0];// 设置显示区间 0 ~ 5spipItem.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(5, 600));// 加载画中画[pipManager loadPip:pipItem];// 查询全部画中画NSArray<TAVMediaPipItem *> *pips = [pipManager getAllPipItems];// 移除画中画[pipManager removePip:pipItem];

注意:说明:

注意:加载/移除画中画后需调用 flushImmediately 刷新预览。

赞 (0)
上一篇 4天前
下一篇 4天前