Started work on syncronizing seperated audio and video tracks into back into one player.
This commit is contained in:
parent
e0832c2c1f
commit
a59b6d0e19
|
|
@ -328,6 +328,18 @@ class rawFileBase extends mediaHandler{
|
||||||
//Pull volume from video
|
//Pull volume from video
|
||||||
this.player.volume = this.video.volume;
|
this.player.volume = this.video.volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSeek(event){
|
||||||
|
super.onSeek(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
onBuffer(event){
|
||||||
|
super.onBuffer(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
onPause(event){
|
||||||
|
super.onPause(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -397,17 +409,48 @@ class rawFileHandler extends rawFileBase{
|
||||||
//Run derived method
|
//Run derived method
|
||||||
super.defineListeners();
|
super.defineListeners();
|
||||||
|
|
||||||
|
this.video.addEventListener('playing', this.onPlay.bind(this));
|
||||||
this.video.addEventListener('pause', this.onPause.bind(this));
|
this.video.addEventListener('pause', this.onPause.bind(this));
|
||||||
this.video.addEventListener('seeked', this.onSeek.bind(this));
|
this.video.addEventListener('seeked', this.onSeek.bind(this));
|
||||||
this.video.addEventListener('waiting', this.onBuffer.bind(this));
|
this.video.addEventListener('waiting', this.onBuffer.bind(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildPlayer(){
|
||||||
|
super.buildPlayer();
|
||||||
|
|
||||||
|
this.audio = new Audio();
|
||||||
|
}
|
||||||
|
|
||||||
|
destroyPlayer(){
|
||||||
|
//Call derived method
|
||||||
|
super.destroyPlayer();
|
||||||
|
|
||||||
|
//Destroy the audio player
|
||||||
|
this.audio.pause();
|
||||||
|
this.audio.remove();
|
||||||
|
}
|
||||||
|
|
||||||
start(){
|
start(){
|
||||||
//Call derived start
|
//Call derived start
|
||||||
super.start();
|
super.start();
|
||||||
|
|
||||||
|
//Just pull the combo source by default
|
||||||
|
const combo = this.nowPlaying.rawLink.combo[0]
|
||||||
|
|
||||||
|
//Check if the combo source is null
|
||||||
|
if(combo != null){
|
||||||
//Set video
|
//Set video
|
||||||
this.video.src = this.nowPlaying.rawLink;
|
this.video.src = combo[1];
|
||||||
|
}else{
|
||||||
|
|
||||||
|
//Pull video only link
|
||||||
|
const video = this.nowPlaying.rawLink.video[0]
|
||||||
|
const audio = this.nowPlaying.rawLink.audio[0];
|
||||||
|
|
||||||
|
//Set video source
|
||||||
|
this.video.src = video[1];
|
||||||
|
this.audio.src = audio[1];
|
||||||
|
}
|
||||||
|
|
||||||
//Set video volume
|
//Set video volume
|
||||||
this.video.volume = this.player.volume;
|
this.video.volume = this.player.volume;
|
||||||
|
|
@ -417,14 +460,38 @@ class rawFileHandler extends rawFileBase{
|
||||||
|
|
||||||
//play video
|
//play video
|
||||||
this.video.play();
|
this.video.play();
|
||||||
|
|
||||||
|
//if we have an audio src
|
||||||
|
if(this.audio.src != ""){
|
||||||
|
//Set audio volume
|
||||||
|
this.audio.volume = this.player.volume;
|
||||||
|
|
||||||
|
//Play it too
|
||||||
|
this.audio.play();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
play(){
|
play(){
|
||||||
|
//play video
|
||||||
this.video.play();
|
this.video.play();
|
||||||
|
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio.src != ""){
|
||||||
|
//Play it too
|
||||||
|
this.audio.play();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pause(){
|
pause(){
|
||||||
|
//pause video
|
||||||
this.video.pause();
|
this.video.pause();
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio.src != ""){
|
||||||
|
//Pause it too
|
||||||
|
this.audio.pause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sync(timestamp = this.lastTimestamp){
|
sync(timestamp = this.lastTimestamp){
|
||||||
|
|
@ -436,12 +503,65 @@ class rawFileHandler extends rawFileBase{
|
||||||
//Set current video time based on timestamp received from server
|
//Set current video time based on timestamp received from server
|
||||||
this.video.currentTime = timestamp;
|
this.video.currentTime = timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio != ""){
|
||||||
|
//Re-sync it to the video, regardless if we synced video
|
||||||
|
this.audio.currentTime = this.video.currentTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getTimestamp(){
|
getTimestamp(){
|
||||||
//Return current timestamp
|
//Return current timestamp
|
||||||
return this.video.currentTime;
|
return this.video.currentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onSeek(event){
|
||||||
|
//Call derived event
|
||||||
|
super.onSeek(event);
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio != "" && this.video != null){
|
||||||
|
//Set it's timestamp too
|
||||||
|
this.audio.currentTime = this.video.currentTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onBuffer(event){
|
||||||
|
//Call derived event
|
||||||
|
super.onBuffer(event);
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio != "" && this.video != null){
|
||||||
|
//Set it's timestamp
|
||||||
|
this.audio.currentTime = this.video.currentTime;
|
||||||
|
//pause it
|
||||||
|
this.audio.pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onPause(event){
|
||||||
|
//Call derived event
|
||||||
|
super.onPause(event);
|
||||||
|
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio != "" && this.video != null){
|
||||||
|
//Set it's timestamp
|
||||||
|
this.audio.currentTime = this.video.currentTime;
|
||||||
|
//pause it
|
||||||
|
this.audio.pause();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onPlay(event){
|
||||||
|
//if we have a seperate audio track
|
||||||
|
if(this.audio != "" && this.video != null){
|
||||||
|
//Set it's timestamp
|
||||||
|
this.audio.currentTime = this.video.currentTime;
|
||||||
|
//pause it
|
||||||
|
this.audio.play();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -195,12 +195,12 @@ class player{
|
||||||
//If we're running a source from IA
|
//If we're running a source from IA
|
||||||
if(data.media.type == 'ia'){
|
if(data.media.type == 'ia'){
|
||||||
//Replace specified CDN with generic URL, in-case of hard reload
|
//Replace specified CDN with generic URL, in-case of hard reload
|
||||||
data.media.rawLink = data.media.rawLink.replace(/^https(.*)archive\.org(.*)items/g, "https://archive.org/download")
|
//data.media.rawLink = data.media.rawLink.replace(/^https(.*)archive\.org(.*)items/g, "https://archive.org/download")
|
||||||
|
|
||||||
//If we have an IA source and a custom IA CDN Server set
|
//If we have an IA source and a custom IA CDN Server set
|
||||||
if(data.media.type == 'ia' && localStorage.getItem("IACDN") != ""){
|
if(data.media.type == 'ia' && localStorage.getItem("IACDN") != ""){
|
||||||
//Generate and set new link
|
//Generate and set new link
|
||||||
data.media.rawLink = data.media.rawLink.replace("https://archive.org/download", `https://${localStorage.getItem("IACDN")}.archive.org/0/items`);
|
//data.media.rawLink = data.media.rawLink.replace("https://archive.org/download", `https://${localStorage.getItem("IACDN")}.archive.org/0/items`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue