diff --git a/src/components/playback/playbackmanager.js b/src/components/playback/playbackmanager.js index dbf2a37813..a2e07fe8fa 100644 --- a/src/components/playback/playbackmanager.js +++ b/src/components/playback/playbackmanager.js @@ -2240,13 +2240,14 @@ class PlaybackManager { const streamInfo = createStreamInfoFromUrlItem(item); streamInfo.fullscreen = playOptions.fullscreen; getPlayerData(player).isChangingStream = false; - return player.play(streamInfo).then(function () { + return player.play(streamInfo).then(() => { loading.hide(); onPlaybackStartedFn(); onPlaybackStarted(player, playOptions, streamInfo); - }, function () { - // TODO: show error message + }).catch((errorCode) => { self.stop(player); + loading.hide(); + showPlaybackInfoErrorMessage(self, errorCode || 'ErrorDefault'); }); }); } @@ -2935,7 +2936,7 @@ class PlaybackManager { state.NextMediaType = nextMediaType; - if (isServerItem(streamInfo.item)) { + if (streamInfo && isServerItem(streamInfo.item)) { if (player.supportsProgress === false && state.PlayState && !state.PlayState.PositionTicks) { state.PlayState.PositionTicks = streamInfo.item.RunTimeTicks; } diff --git a/src/plugins/youtubePlayer/plugin.js b/src/plugins/youtubePlayer/plugin.js index 758360576d..93bb435c27 100644 --- a/src/plugins/youtubePlayer/plugin.js +++ b/src/plugins/youtubePlayer/plugin.js @@ -5,6 +5,14 @@ import loading from '../../components/loading/loading'; /* globals YT */ +const errorCodes = { + 2: 'YoutubeBadRequest', + 5: 'YoutubePlaybackError', + 100: 'YoutubeNotFound', + 101: 'YoutubeDenied', + 150: 'YoutubeDenied' +}; + function zoomIn(elem, iterations) { const keyframes = [ { transform: 'scale3d(.2, .2, .2) ', opacity: '.6', offset: 0 }, @@ -139,7 +147,8 @@ function setCurrentSrc(instance, elem, options) { } else if (event.data === YT.PlayerState.PAUSED) { Events.trigger(instance, 'pause'); } - } + }, + 'onError': (e) => reject(errorCodes[e.data] || 'ErrorDefault') }, playerVars: { controls: 0, diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 778d4d11f8..3f1276fb69 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -1449,5 +1449,9 @@ "LabelAllowedAudioChannels": "Maximum Allowed Audio Channels", "LabelSelectAudioChannels": "Channels", "LabelSelectMono": "Mono", - "LabelSelectStereo": "Stereo" + "LabelSelectStereo": "Stereo", + "YoutubeBadRequest": "Bad request.", + "YoutubePlaybackError": "Requested video cannot be played.", + "YoutubeNotFound": "Video not found.", + "YoutubeDenied": "Requested video is not allowed to be played in embedded players." }