TXLivePlayer

最近更新时间:2019-05-16 16:04:38

功能

视频播放器。

介绍

主要负责将直播流的音视频画面进行解码和本地渲染,包含如下技术特点:

  • 针对腾讯云的拉流地址,可使用低延时拉流,实现直播连麦等相关场景。
  • 针对腾讯云的拉流地址,可使用直播时移功能,能够实现直播观看与时移观看的无缝切换。
  • 支持自定义的音视频数据处理,您可以根据项目需要处理直播流中的音视频数据,然后进行渲染以及播放。

SDK 基础函数

TXLivePlayer

创建 TXLivePlayer 实例。

 TXLivePlayer(Context context)

参数

参数 类型 含义
context Context 上下文。

setConfig

设置 TXLivePlayer 播放配置项。

void setConfig(TXLivePlayConfig config)

参数

参数 类型 含义
config TXLivePlayConfig 播放器配置项了,详情见 TXLivePlayConfig

setPlayListener

设置推流回调接口。

void setPlayListener(ITXLivePlayListener listener)

参数

参数 类型 含义
listener ITXLivePlayListener 播放器回调,请参考 ITXLivePlayListener

播放基础接口

setPlayerView

设置播放器的视频渲染 View。

void setPlayerView(TXCloudVideoView glRootView)

参数

参数 类型 含义
glRootView TXCloudVideoView 视频渲染 View。

startPlay

播放器开始播放。

int startPlay(String playUrl, int playType)

参数

参数 类型 含义
playUrl String 播放的流地址。
playType int 播放类型。

返回

是否成功启动播放, 0: 成功;-1: 失败,playUrl 为空;-2: 失败,playUrl 非法;-3: 失败,playType 非法。

介绍

可播放的直播流连接:

  • RTMP 直播流:PLAY_TYPE_LIVE_RTMP
  • FLV 直播流:PLAY_TYPE_LIVE_FLV
  • RTMP 加速流,用于连麦:PLAY_TYPE_LIVE_RTMP_ACC。

stopPlay

停止播放。

int stopPlay(boolean isNeedClearLastImg)

参数

参数 类型 含义
isNeedClearLastImg boolean true:清除;false:不清除。

返回

0:成功;非0:失败。

介绍

isNeedClearLastImg 提供是否清除最后一帧画面的逻辑:

  • 推荐在正常停止播放时,进行清除
  • 异常播放,如网络异常等,而您希望等待重连服务器,继续播放时,推荐保留。

isPlaying

是否正在播放。

boolean isPlaying()

返回

true:正在播放;false:未播放。


pause

暂停播放。

void pause()

介绍

停止获取流数据,保留最后一帧画面。


resume

恢复播放。

void resume()

介绍

重新获取数据,获取当前直播数据。


setSurface

使用 Surface 模式用于本地渲染。

void setSurface(Surface surface)

参数

参数 类型 含义
surface Surface 视频渲染 surface。

说明:


setSurfaceSize

设置渲染 Surface 的大小。

void setSurfaceSize(int width, int height)

参数

参数 类型 含义
width int 宽。
height int 高。

说明:

  • Surface 大小变化后,需要重新设定
  • 此功能为高级特性,除非您需要使用该特性,否则建议您使用 setPlayerView(TXCloudVideoView)

播放配置接口

setRenderMode

设置播放渲染模式。

void setRenderMode(int mode)

参数

参数 类型 含义
mode int 图像渲染模式,可以设置值为:TXLiveConstants#RENDER_MODE_FULL_FILL_SCREEN、TXLiveConstants#RENDER_MODE_ADJUST_RESOLUTION。

介绍

渲染模式有两种:

  • 平铺模式:视频画面将会按照比例铺满屏幕,多余部分会被裁减掉,此模式下不会有黑边。
  • 自适应模式:视频画面将等比例缩放,会居中显示,此模式可能会有黑边。

setRenderRotation

设置图像渲染角度。

void setRenderRotation(int rotation)

参数

参数 类型 含义
rotation int 图像渲染角度,可设置值为:TXLiveConstants#RENDER_ROTATION_PORTRAIT、TXLiveConstants#RENDER_ROTATION_LANDSCAPE。

介绍

渲染角度有两种:

  • 竖屏:播放是竖屏播放的时候使用
  • 横屏:播放是横屏播放的时候使用。

enableHardwareDecode

开启硬件加速。

boolean enableHardwareDecode(boolean enable)

参数

参数 类型 含义
enable boolean true:启用视频硬解码, false:禁用视频硬解码。

返回

true:关闭或开启硬件加速成功;false:关闭或开启硬件加速失败。


setMute

设置是否静音播放。

void setMute(boolean mute)

参数

参数 类型 含义
mute boolean true:静音播放;false:不静音播放。

setAudioRoute

设置声音播放模式。

void setAudioRoute(int audioRoute)

参数

参数 类型 含义
audioRoute int 声音播放模式,可设置值:TXLiveConstants#AUDIO_ROUTE_SPEAKER、TXLiveConstants#AUDIO_ROUTE_SPEAKER。

介绍

播放模式有两种:

  • 听筒:声音将从听筒播出。
  • 扬声器:声音将从扬声器播出。

switchStream

多清晰度切换。

int switchStream(String playUrl)

参数

参数 类型 含义
playUrl String 播放的流地址。

介绍

使用说明:

  • 必须是腾讯云的直播地址。
  • 必须是当前播放直播流的不同清晰度,切换到无关流地址可能会失败。

本地录制和截图

setVideoRecordListener

设置录制回调接口。

void setVideoRecordListener(TXRecordCommon.ITXVideoRecordListener listener)

参数

参数 类型 含义
listener TXRecordCommon.ITXVideoRecordListener 接口。

startRecord

启动视频录制。

int startRecord(int recordType)

参数

参数 类型 含义
recordType int TXRecordCommon#RECORD_TYPE_STREAM_SOURCE

返回

0表示成功,非0表示失败。

介绍

目前录制格式仅支持录制直播流,TXRecordCommon#RECORD_TYPE_STREAM_SOURCE。


stopRecord

停止视频录制。

int stopRecord()

返回

0表示成功,非0表示失败。


snapshot

播放过程中本地截图。

void snapshot(ITXSnapshotListener listener)

参数

参数 类型 含义
listener ITXSnapshotListener 截图回调。

自定义数据处理

addVideoRawData

设置软解码数据载体 Buffer。

boolean addVideoRawData(byte [] yuvBuffer)

参数

参数 类型 含义
yuvBuffer byte [] -

介绍

三个注意点:

  • 该 Buffer 用于接受软解回调出来的 I420 格式的 YUV 数据。
  • Buffer 大小 = width * height * 3 / 2。
  • 视频 width 、 height,可通过 ITXLivePlayListener#onPlayEvent(int, Bundle) 的 TXLiveConstants#PLAY_EVT_CHANGE_RESOLUTION 事件获取到。

setVideoRawDataListener

设置软解码视频数据回调。

void setVideoRawDataListener(final ITXVideoRawDataListener listener)

说明:

  • 此功能会有一定的性能开销,特别是在高分辨率的情况下。
  • 除非您有特殊的需求,否则不建议您开启。

setAudioRawDataListener

设置音频数据回调。

void setAudioRawDataListener(ITXAudioRawDataListener listener)

参数

参数 类型 含义
listener ITXAudioRawDataListener 音频数据回调。

说明:

  • 音频播放器会在播放数据的前一刻,调用此函数,同步回调将要播放的数据。
  • 请不要在函数内做耗时操作,否则会影响声音播放的流畅性。

直播时移接口

prepareLiveSeek

直播时移准备。

int prepareLiveSeek(String domain, int bizid)

参数

参数 类型 含义
domain String 时移域名。
bizid int 流bizid。

返回

0:OK;-1:无直播地址;-2:appId 未配置。

介绍

使用说明:

  • 非腾讯云直播地址不能时移。
  • 使用时移功能需在播放开始后调用此方法,否则时移失败。
  • 时移的使用请参考文档:直播时移播放使用文档

seek

直播时移跳转。

void seek(int time)

参数

参数 类型 含义
time int 视频流时间点,单位为秒。

介绍

直播流则会时移到该时间点。


resumeLive

恢复直播播放。

int resumeLive()

介绍

从直播时移播放中,恢复到直播播放。


待废弃接口

setAutoPlay

设置点播自动播放。

void setAutoPlay(boolean autoPlay)

参数

参数 类型 含义
autoPlay boolean 自动播放开关。

介绍

待废弃,此接口仅针对点播视频使用,对直播视频无效;若您想使用点播功能,请使用 TXVodPlayer 进行点播播放。


setRate

设置点播播放速率。

void setRate(float rate)

参数

参数 类型 含义
rate float -

介绍

待废弃,此接口仅针对点播视频使用,对直播视频无效;若您想使用点播功能,请使用 TXVodPlayer 进行点播播放。


ITXSnapshotListener

功能

截图回调接口类。

onSnapshot

截图回调。

void onSnapshot(Bitmap bmp)

参数

参数 类型 含义
bmp Bitmap 当前视频图片。

ITXVideoRawDataListener

功能

软解视频数据回调接口类。

onVideoRawDataAvailable

软解码器解出一帧数据回调一次。

void onVideoRawDataAvailable(byte [] yuvBuffer, int width, int height, int timestamp)

参数

参数 类型 含义
yuvBuffer byte [] I420 格式 YUV 数据。
width int 视频宽度。
height int 视频高度。
timestamp int 视频 PTS。

介绍

需要在回调中再次调用 #addVideoRawData(byte[])},将 buffer 塞给 SDK 来填充下一帧 YUV 数据。


ITXAudioRawDataListener

功能

音频原始数据接口类。

onPcmDataAvailable

音频播放数据回调,数据格式 :PCM。

void onPcmDataAvailable(byte [] buf, long timestamp)

参数

参数 类型 含义
buf byte [] pcm 数据。
timestamp long 时间戳。

介绍

音频播放器会在播放数据的前一刻,调用此函数,同步回调将要播放的数据。因此在函数内部做耗时操作可能会影响播放。


onAudioInfoChanged

音频播放信息回调。

void onAudioInfoChanged(int sampleRate, int channels, int bits)

参数

参数 类型 含义
sampleRate int 采样率。
channels int 声道数。
bits int 采样点大小。