直播
播放控制
更新时间: 2021/11/02 11:14:18
本文档主要介绍:
- 播放过程中的暂停、快进、播放等操作
- 换源、截图等操作
- 播放过程中的显示模式、倍速、音量、静音等动态参数设置
播放过程控制
API介绍
- 开始播放。
- 暂停播放。
- 拖动播放。执行完成后会收到NELivePlayerMoviePlayerSeekCompletedNotification通知。
- 停止播放。
API原型
/**
* @brief 暂停播放
*
* @discussion
* 调用play方法继续播放。如果当前播放已经暂停,则调用该方法将无效果。\\\n
* 此时播放器状态为: NELPMoviePlaybackStatePaused
*
* @warning 该接口只针对点播地址有效。
*
* @return 无
*/
- (void)pause;
/**
* @brief 设置当前播放时间点(用于seek操作)以及获取当前播放的时间点
*
* @param currentPlaybackTime 当前要播放的时间点(单位:秒)
*
* @discussion
* 需要在播放器发送NELivePlayerDidPreparedToPlayNotification通知后,才能调用该set方法设置到某一时间点播放,\\\n
* 此时isPreparedToPlay的值为 YES
*
* @return get操作返回的是当前播放的时间点
*
* @see isPreparedToPlay
*/
@property(nonatomic) NSTimeInterval currentPlaybackTime;
示例
[self.liveplayer pause];
[self.liveplayer setCurrentPlaybackTime:30];
特殊说明
拖动播放时需要先通过duration获取视频时长,根据时长按照比例进行时间设置。
换源操作
API介绍
- 播放过程中,实现常规视频之间的切换。
- 播放过程中,各种视频之间的切换。
API原型
/**
* @brief 播放过程中切换播放地址
*
* @param aUrl 待切换的播放地址
*
* @return >= 0 切换成功, < 0 切换失败
*/
- (int)switchContentUrl:(NSURL *)aUrl;
/**
@brief 播放过程中切换播放地址(扩展)
@param aUrl 待切换的播放地址
@param config 播放地址相关的配置
@return >= 0 切换成功, < 0 切换失败
*/
- (int)switchContentUrl:(NSURL *)aUrl config:(NELPUrlConfig *)config;
/**
* @brief 加密视频的切换(即将废弃)
*
* @param aUrl 待切换的播放地址
* @param transferToken 获取密钥的令牌
* @param accid 视频云用户创建的其子用户id
* @param appKey 开发者平台分配的AppKey
* @param token 视频云用户子用户的token
* @param complete 异步返回密钥检测结果
*
* @discussion 切换成功后直接播放,不需要调用prepareToPlay。
*
* @return ret 返回密钥检测的状态
*/
- (void)switchDecryptionUrl:(NSURL *)aUrl
transferToken:(NSString *)transferToken
accid:(NSString *)accid
appKey:(NSString *)appKey
token:(NSString *)token
complete:(void(^)(NELPKeyCheckResult ret))complete;
/**
* @brief 已知密钥的情况下可以调用该接口进行切换(即将废弃)
*
* @param key 密钥
* @param complete 异步返回密钥检测结果
*
* @discussion 切换成功后直接播放,不需要调用prepareToPlay。
* @return ret 返回密钥检测的状态。
*/
- (void)switchDecryptionKeyUrl:(NSURL *)aUrl
key:(NSString *)key
complete:(void(^)(NELPKeyCheckResult ret))complete;
参数说明
参数 | 类型 | 说明 |
---|---|---|
aUrl | NSURL | 切换的目标地址 |
config | NSString | 缓冲和解密配置 |
示例
NELPUrlConfig *urlConfig = [[NELPUrlConfig alloc] init];
//配置缓存(非必须)
urlConfig.cacheConfig = [[NELPUrlCacheConfig alloc] init];
urlConfig.cacheConfig.isCache = YES;
urlConfig.cacheConfig.cacheRootPath = nil;
//配置解密(非必须)
NSString *transferToken = @"test";
NSString *accid = @"test";
NSString *appKey = @"test";
NSString *token = @"test";
urlConfig.decryptionConfig = [NELPUrlDecryptionConfig configWithTransferToken:transferToken
accid:accid
appKey:appKey
token:token];
//切换
[_player switchContentUrl:url config:urlConfig];
换源后保留的参数
- 针对用户已经设置过的参数,换源操作会对部分参数进行保留,详见下表:
参数 | 说明 | 是否保留 |
---|---|---|
bufferStrategy | 缓冲策略 | 保留 |
bufferSize | 缓冲区大小 | 保留 |
HardwareDecoder | 软硬件编码 | 保留 |
ShouldAutoplay | 是否自动播放 | 保留 |
Mute | 静音 | 保留 |
Mirror | 镜像显示 | 保留 |
Volume | 音量 | 保留 |
LoopCount | 循环次数 | 保留 |
AccurateSeek | 精确seek开关 | 保留 |
PlaybackSpeed | 播放速度 | 保留 |
PlaybackTimeout | 拉流超时时间 | 保留 |
OpenReceiveSyncData | 是否接收同步透传的信息 | 保留 |
RetryConfig | 自动重试配置 | 保留 |
SelectedAudioTrack | 选择的音轨 | 保留 |
yuvCallback | YUV回调 | 保留 |
pcmConfig | PCM配置 | 保留 |
pcmCallback | PCM回调 | 保留 |
subtitleCallback | 字幕回调 | 保留 |
特殊说明
- switchContentUrl:只能进行普通源之间切换
- switchContentUrl:config: 可以实现普通源和加密源之间的互切(普通-普通,普通-加密,加密-加密)
- 调用成功之后不需要调用prepareToPlay接口,切换成功之后会收到NELivePlayerDidPreparedToPlayNotification通知,失败会收到NELivePlayerPlaybackFinishedNotification通知。
- 为安全起见,外部调用请尽量在主线程调用
截图操作
API介绍
同步接口,返回当前播放时间点的视频图像,截图结果以 UIImage 格式返回,开发者可根据自己的需求保存成 jpg 格式或 png 格式,并保存到指定位置,demo 默认以 jpg 格式保存在相册中。
API原型
/**
* @brief 截图
*
* @discussion
* 调用prepareToPlay方法,播放器发出NELivePlayerDidPreparedToPlayNotification通知后,才能调用该方法。
*
* @return 截图结果,以UIImage格式保存
*/
- (UIImage *)getSnapshot;
参数说明
无
示例
无
后台操作参数
API介绍
- 动态参数,设置后台是否需要继续播放视频。
API原型
/**
* @brief 设置播放器切入后台后的播放状态
*
* @discussion
* 若设置后台暂停,则在切入后台后播放器处于暂停状态,回到前台需要手动播放\\\n
* 若设置后台继续播放,则在切入后台后音频继续播放,回到前台后音视频正常播放\\\n
*
* 注意:仅播放点播流时支持后台暂停;对于直播流,若在切入后台时不需要继续播放,则需要在切入后台的过程中将播放器关闭并释放相关资源,切回前台再重新开始播放。
*
* @param pause YES:后台暂停 NO:继续播放
*
* @return 无
*/
- (void)setPauseInBackground:(BOOL)pause;
参数介绍
参数 | 类型 | 说明 |
---|---|---|
pause | BOOL | 设置为NO: 在进行前后台切换时,sdk内部不做处理。 设置为YES:为在进入后台时sdk内部停止播放,回到前台后恢复播放。具体内部逻辑如下: 直播:进入后台停止拉流,保留当前帧画面在屏幕上。回到前台后,重新拉流。 点播:进入后台暂停,回到前台后继续播放。 默认为:NO |
示例
[self.liveplayer setPauseInBackground:YES];
操作相关的动态参数
API介绍
播放过程中相关的动态参数设置。
- 静音。
- 音量。
- 倍速。仅针对点播有效。
- 显示模式。
API原型
/**
* @brief 静音功能
*
* @param isMute YES:开启静音 NO:关闭静音
*
* @return 无
*/
- (void)setMute: (BOOL)isMute;
/**
* @brief 设置播放音量
*
* @param volume 音量大小(范围 0.0 ~ 1.0,0.0为最小,1.0为最大)
*
* @return 无
*/
- (void)setVolume:(float)volume;
/**
* @brief 设置播放速度,仅适用于点播
*
* @param speed 播放速度(范围 0.5 ~ 0)
*
* @return 无
*/
@property (nonatomic) float playbackSpeed;
/**
* @brief 设置显示模式.
*
* @param aScalingMode 显示模式.
*
* @discussion 共有以下4种显示模式,详见 NELPMovieScalingMode \\\n
* NELPMovieScalingModeNone, //!< 无缩放 \\\n
* NELPMovieScalingModeAspectFit, //!< 等比例缩放,某一边会有黑边填充 \\\n
* NELPMovieScalingModeAspectFill, //!< 等比例缩放,某一边可能会被裁减 \\\n
* NELPMovieScalingModeFill //!< 全屏显示,画面宽高比可能与视频原始宽高比不一致
*
* @return 无.
*/
- (void)setScalingMode: (NELPMovieScalingMode) aScalingMode;
参数介绍
参数 | 类型 | 说明 |
---|---|---|
isMute | BOOL | 默认为NO。YES:静音 NO:正常 |
volume | float | 音量大小(范围 0.0 ~ 1.0,0.0为最小,1.0为最大) |
playbackSpeed | float | 播放速度(范围 0.5 ~ 0) |
aScalingMode | NELPMovieScalingMode | 显示模式 |
示例
//设置静音
[self.liveplayer setMute:NO];
//设置音量
[self.liveplayer setVolume:1.0];
//设置播放速度
[self.liveplayer setPlaybackSpeed:1.0];
//设置画面显示模式
[self.liveplayer setScalingMode:NELPMovieScalingModeNone];
此文档是否对你有帮助?
有帮助
我要吐槽