diff --git a/src/components/VideoPlayer.vue b/src/components/VideoPlayer.vue
index 8ff5be5b..b419488c 100644
--- a/src/components/VideoPlayer.vue
+++ b/src/components/VideoPlayer.vue
@@ -25,6 +25,11 @@
skip_next
+
@@ -67,6 +72,7 @@ export default {
isHoveringTimebar: false,
currentTime: 0,
seekbarPadding: 2,
+ error: 0,
};
},
computed: {
@@ -517,73 +523,79 @@ export default {
quality > 0 && (this.video.audioStreams.length > 0 || this.video.livestream) && !disableVideo;
if (qualityConds) this.$player.configure("abr.enabled", false);
- player.load(uri, 0, mime).then(() => {
- const isSafari = window.navigator?.vendor?.includes("Apple");
+ player
+ .load(uri, 0, mime)
+ .then(() => {
+ const isSafari = window.navigator?.vendor?.includes("Apple");
- if (!isSafari) {
- // Set the audio language
- const prefLang = this.getPreferenceString("hl", "en").substr(0, 2);
- var lang = "en";
- for (var l in player.getAudioLanguages()) {
- if (l == prefLang) {
- lang = l;
- return;
- }
- }
- player.selectAudioLanguage(lang);
- }
-
- if (qualityConds) {
- var leastDiff = Number.MAX_VALUE;
- var bestStream = null;
-
- var bestAudio = 0;
-
- const tracks = player
- .getVariantTracks()
- .filter(track => track.language == lang || track.language == "und");
-
- // Choose the best audio stream
- if (quality >= 480)
- tracks.forEach(track => {
- const audioBandwidth = track.audioBandwidth;
- if (audioBandwidth > bestAudio) bestAudio = audioBandwidth;
- });
-
- // Find best matching stream based on resolution and bitrate
- tracks
- .sort((a, b) => a.bandwidth - b.bandwidth)
- .forEach(stream => {
- if (stream.audioBandwidth < bestAudio) return;
-
- const diff = Math.abs(quality - stream.height);
- if (diff < leastDiff) {
- leastDiff = diff;
- bestStream = stream;
+ if (!isSafari) {
+ // Set the audio language
+ const prefLang = this.getPreferenceString("hl", "en").substr(0, 2);
+ var lang = "en";
+ for (var l in player.getAudioLanguages()) {
+ if (l == prefLang) {
+ lang = l;
+ return;
}
- });
+ }
+ player.selectAudioLanguage(lang);
+ }
- player.selectVariantTrack(bestStream);
- }
+ if (qualityConds) {
+ var leastDiff = Number.MAX_VALUE;
+ var bestStream = null;
- this.video.subtitles.map(subtitle => {
- player.addTextTrackAsync(
- subtitle.url,
- subtitle.code,
- "subtitles",
- subtitle.mimeType,
- null,
- subtitle.name,
- );
+ var bestAudio = 0;
+
+ const tracks = player
+ .getVariantTracks()
+ .filter(track => track.language == lang || track.language == "und");
+
+ // Choose the best audio stream
+ if (quality >= 480)
+ tracks.forEach(track => {
+ const audioBandwidth = track.audioBandwidth;
+ if (audioBandwidth > bestAudio) bestAudio = audioBandwidth;
+ });
+
+ // Find best matching stream based on resolution and bitrate
+ tracks
+ .sort((a, b) => a.bandwidth - b.bandwidth)
+ .forEach(stream => {
+ if (stream.audioBandwidth < bestAudio) return;
+
+ const diff = Math.abs(quality - stream.height);
+ if (diff < leastDiff) {
+ leastDiff = diff;
+ bestStream = stream;
+ }
+ });
+
+ player.selectVariantTrack(bestStream);
+ }
+
+ this.video.subtitles.map(subtitle => {
+ player.addTextTrackAsync(
+ subtitle.url,
+ subtitle.code,
+ "subtitles",
+ subtitle.mimeType,
+ null,
+ subtitle.name,
+ );
+ });
+ videoEl.volume = this.getPreferenceNumber("volume", 1);
+ const rate = this.getPreferenceNumber("rate", 1);
+ videoEl.playbackRate = rate;
+ videoEl.defaultPlaybackRate = rate;
+
+ const autoDisplayCaptions = this.getPreferenceBoolean("autoDisplayCaptions", false);
+ this.$player.setTextTrackVisibility(autoDisplayCaptions);
+ })
+ .catch(e => {
+ console.error(e);
+ this.error = e.code;
});
- videoEl.volume = this.getPreferenceNumber("volume", 1);
- const rate = this.getPreferenceNumber("rate", 1);
- videoEl.playbackRate = rate;
- videoEl.defaultPlaybackRate = rate;
-
- const autoDisplayCaptions = this.getPreferenceBoolean("autoDisplayCaptions", false);
- this.$player.setTextTrackVisibility(autoDisplayCaptions);
- });
// expand the player to fullscreen when the fullscreen query equals true
if (this.$route.query.fullscreen === "true" && !this.$ui.getControls().isFullScreenEnabled())
diff --git a/src/locales/en.json b/src/locales/en.json
index 1b73aeba..268fa6f9 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -18,7 +18,8 @@
"dearrow": "DeArrow"
},
"player": {
- "watch_on": "Watch on {0}"
+ "watch_on": "Watch on {0}",
+ "failed": "Failed with error code {0}, refer logs for more info"
},
"actions": {
"subscribe": "Subscribe - {count}",