npaw-plugin-adapters
Version:
NPAW's Plugin Adapters
289 lines (251 loc) • 7.08 kB
JavaScript
export default class BitmovinReactNativeAdapter {
onSourceLoaded(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onSourceLoaded:', e);
this.firePlayerLog('onSourceLoaded', e);
if (e && e.source && e.source.duration) {
this.duration = e.source.duration;
}
}
onAudioChanged(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onAudioChanged:', e);
this.firePlayerLog('onAudioChanged', e);
}
onVideoDownloadQualityChanged(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onVideoDownloadQualityChanged:', e);
this.firePlayerLog('onVideoDownloadQualityChanged', e);
}
onVideoPlaybackQualityChanged(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onVideoPlaybackQualityChanged:', e);
this.firePlayerLog('onVideoPlaybackQualityChanged', e);
if(!e){
return;
}
if (e.width) {
this.width = e.width;
}
if (e.height) {
this.height = e.height;
}
if (e.bitrate) {
this.bitrate = e.bitrate;
}
if (e && e.newVideoQuality) {
this.width = e.newVideoQuality.width;
this.height = e.newVideoQuality.height;
this.bitrate = e.newVideoQuality.bitrate;
}
}
onReady(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onReady:', e);
this.firePlayerLog('onReady', e);
}
onPlay(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPlay:', e);
this.firePlayerLog('onPlay', e);
var triggeredEvents = '_onPlay';
if (e && e.name) {
triggeredEvents = e.name;
}
if (!this.flags.isStarted) {
this.fireStart({}, triggeredEvents);
}
if(this.flags.isStarted){
this.fireResume({}, triggeredEvents);
}
}
onPlaying(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPlaying:', e);
this.firePlayerLog('onPlaying', e);
var triggeredEvents = '_onPlay';
if (e && e.name) {
triggeredEvents = e.name;
}
if (!this.flags.isJoined) {
this.fireJoin({}, triggeredEvents);
}
if(this.flags.isStarted){
this.fireResume({}, triggeredEvents);
}
}
onTimeChanged(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onTimeChanged:', e);
this.firePlayerLog('onTimeChanged', e);
if (!e) {
return;
}
if (e.currentTime) {
this.playhead = e.currentTime;
} else if(e.time) {
this.playhead = e.currentTime;
}
this.playhead = e.currentTime;
}
onPaused(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPaused:', e);
this.firePlayerLog('onPaused', e);
var triggeredEvents = '_onPaused';
if (e && e.name) {
triggeredEvents = e.name;
}
this.firePause({}, triggeredEvents);
}
onSeek(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onSeek:', e);
this.firePlayerLog('onSeek', e);
var triggeredEvents = '_onSeek';
if (e && e.name) {
triggeredEvents = e.name;
}
this.isSeeking = true;
this.fireSeekBegin({}, false, triggeredEvents);
}
onSeeked(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onSeeked:', e);
this.firePlayerLog('onSeeked', e);
var triggeredEvents = '_onSeeked';
if (e && e.name) {
triggeredEvents = e.name;
}
if (this.seekIntervalId) {
clearInterval(this.seekIntervalId);
}
this.isSeeking = false;
this.seekIntervalId = setInterval(() => {
if (!this.isSeeking) {
this.fireSeekEnd({}, triggeredEvents);
clearInterval(this.seekIntervalId);
this.seekIntervalId = null;
}
}, 500);
}
onPlaybackFinished(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPlaybackFinished:', e);
this.firePlayerLog('onPlaybackFinished', e);
var triggeredEvents = '_onPlaybackFinished';
if (e && e.name) {
triggeredEvents = e.name;
}
this.fireStop({}, triggeredEvents);
}
onStallStarted(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onStallStarted:', e);
this.firePlayerLog('onStallStarted', e);
var triggeredEvents = '_onStallStarted';
if (e && e.name) {
triggeredEvents = e.name;
}
this.fireBufferBegin({}, false, triggeredEvents)
}
onStallEnded(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onStallEnded:', e);
this.firePlayerLog('onStallEnded', e);
var triggeredEvents = '_onStallEnded';
if (e && e.name) {
triggeredEvents = e.name;
}
if(this.chronos.buffer.getDeltaTime(false) < 50){
this.cancelBuffer();
}
else{
this.fireBufferEnd({}, triggeredEvents);
}
}
onPlayerWarning(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPlayerWarning:', e);
this.firePlayerLog('onPlayerWarning', e);
var code = null;
var message = null;
if (e) {
if (e.code) {
code = e.code;
}
if (e.message) {
message = e.message;
}
}
this.fireError(code, message);
}
onPlayerError(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onPlayerError:', e);
this.firePlayerLog('onPlayerError', e);
var code = null;
var message = null;
if (e) {
if (e.code) {
code = e.code;
}
if (e.message) {
message = e.message;
}
}
this.fireError(code, message);
}
onSourceError(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onSourceError:', e);
this.firePlayerLog('onSourceError', e);
var code = null;
var message = null;
if (e) {
if (e.code) {
code = e.code;
}
if (e.message) {
message = e.message;
}
}
this.fireError(code, message);
}
onSourceWarning(e) {
this.getLog().verbose('BitmovinReactNativeAdapter', 'onSourceWarning:', e);
this.firePlayerLog('onSourceWarning', e);
var code = null;
var message = null;
if (e) {
if (e.code) {
code = e.code;
}
if (e.message) {
message = e.message;
}
}
this.fireError(code, message);
}
getBitrate() {
return this.bitrate;
}
onDestroy(e) {
this.fireStop();
}
getVersion() {
return '7.0.2-bitmovin-react-native-jsclass';
}
getPlayhead() {
return this.playhead;
}
getIsLive() {
return !this.duration;
}
getDuration() {
return this.duration;
}
getResource() {
return (this.player && this.player.source && this.player.source.config) ? this.player.source.config.url : null;
}
getTitle() {
return (this.player && this.player.source && this.player.source.config) ? this.player.source.config.title : null;
}
setPlatform(platform) {
this.reactPlatform = platform;
}
getRendition() {
if (this.width && this.height) {
if (this.bitrate) {
return this.getNpawUtils().buildRenditionString(this.width, this.height, this.bitrate);
}
return this.getNpawUtils().buildRenditionString(this.width, this.height);
}
}
getPlayerName() {
return 'Bitmovin React Native';
}
}