1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update offline detection

This commit is contained in:
Luke Pulverenti 2015-09-21 11:43:10 -04:00
parent c651a45dea
commit 930c8cf6d8
26 changed files with 813 additions and 784 deletions

View file

@ -291,8 +291,6 @@
profile.ContainerProfiles = [];
var maxAudioChannels = isVlc ? '6' : '2';
profile.CodecProfiles = [];
profile.CodecProfiles.push({
Type: 'Audio',
@ -303,16 +301,6 @@
}]
});
profile.CodecProfiles.push({
Type: 'VideoAudio',
Codec: 'mp3',
Conditions: [{
Condition: 'LessThanEqual',
Property: 'AudioChannels',
Value: maxAudioChannels
}]
});
if (!isVlc) {
profile.CodecProfiles.push({
Type: 'VideoAudio',
@ -340,7 +328,7 @@
{
Condition: 'LessThanEqual',
Property: 'AudioChannels',
Value: maxAudioChannels
Value: '6'
}
]
});
@ -641,17 +629,18 @@
if (validatePlaybackInfoResult(result)) {
self.currentMediaSource = result.MediaSources[0];
var streamInfo = self.createStreamInfo(self.currentItem.MediaType, self.currentItem, self.currentMediaSource, ticks);
self.createStreamInfo(self.currentItem.MediaType, self.currentItem, self.currentMediaSource, ticks).done(function (streamInfo) {
if (!streamInfo.url) {
MediaController.showPlaybackInfoErrorMessage('NoCompatibleStream');
self.stop();
return false;
}
if (!streamInfo.url) {
MediaController.showPlaybackInfoErrorMessage('NoCompatibleStream');
self.stop();
return;
}
self.currentSubtitleStreamIndex = subtitleStreamIndex;
self.currentSubtitleStreamIndex = subtitleStreamIndex;
changeStreamToUrl(mediaRenderer, playSessionId, streamInfo, streamInfo.startTimeTicksOffset || 0);
changeStreamToUrl(mediaRenderer, playSessionId, streamInfo, streamInfo.startTimeTicksOffset || 0);
});
}
});
};
@ -915,6 +904,8 @@
self.createStreamInfo = function (type, item, mediaSource, startPosition) {
var deferred = $.Deferred();
var mediaUrl;
var contentType;
var startTimeTicksOffset = 0;
@ -1018,13 +1009,32 @@
}
}
return {
var resultInfo = {
url: mediaUrl,
mimeType: contentType,
startTimeTicksOffset: startTimeTicksOffset,
startPositionInSeekParam: startPositionInSeekParam,
playMethod: playMethod
};
if (playMethod == 'DirectPlay' && mediaSource.Protocol == 'File') {
require(['localassetmanager'], function () {
LocalAssetManager.translateFilePath(resultInfo.url).done(function (path) {
resultInfo.url = path;
Logger.log('LocalAssetManager.translateFilePath: path: ' + resultInfo.url + ' result: ' + path);
deferred.resolveWith(null, [resultInfo]);
});
});
}
else {
deferred.resolveWith(null, [resultInfo]);
}
return deferred.promise();
};
self.lastBitrateDetect = 0;
@ -1872,65 +1882,67 @@
function playAudioInternal(item, mediaSource, startPositionTicks) {
var streamInfo = self.createStreamInfo('Audio', item, mediaSource, startPositionTicks);
var audioUrl = streamInfo.url;
self.startTimeTicksOffset = streamInfo.startTimeTicksOffset;
self.createStreamInfo('Audio', item, mediaSource, startPositionTicks).done(function (streamInfo) {
var initialVolume = self.getSavedVolume();
var audioUrl = streamInfo.url;
self.startTimeTicksOffset = streamInfo.startTimeTicksOffset;
var mediaRenderer = new AudioRenderer({
poster: self.getPosterUrl(item)
});
var initialVolume = self.getSavedVolume();
Events.on(mediaRenderer, "volumechange.mediaplayerevent", function () {
var mediaRenderer = new AudioRenderer({
poster: self.getPosterUrl(item)
});
Logger.log('audio element event: volumechange');
Events.on(mediaRenderer, "volumechange.mediaplayerevent", function () {
self.onVolumeChanged(this);
Logger.log('audio element event: volumechange');
});
self.onVolumeChanged(this);
$(mediaRenderer).one("playing.mediaplayerevent", function () {
});
Logger.log('audio element event: playing');
$(mediaRenderer).one("playing.mediaplayerevent", function () {
// For some reason this is firing at the start, so don't bind until playback has begun
Events.on(this, 'ended', self.onPlaybackStopped);
Logger.log('audio element event: playing');
$(this).one('ended', self.playNextAfterEnded);
// For some reason this is firing at the start, so don't bind until playback has begun
Events.on(this, 'ended', self.onPlaybackStopped);
self.onPlaybackStart(this, item, mediaSource);
$(this).one('ended', self.playNextAfterEnded);
}).on("pause.mediaplayerevent", function () {
self.onPlaybackStart(this, item, mediaSource);
Logger.log('audio element event: pause');
}).on("pause.mediaplayerevent", function () {
self.onPlaystateChange(this);
Logger.log('audio element event: pause');
// In the event timeupdate isn't firing, at least we can update when this happens
self.setCurrentTime(self.getCurrentTicks());
self.onPlaystateChange(this);
}).on("playing.mediaplayerevent", function () {
// In the event timeupdate isn't firing, at least we can update when this happens
self.setCurrentTime(self.getCurrentTicks());
Logger.log('audio element event: playing');
}).on("playing.mediaplayerevent", function () {
self.onPlaystateChange(this);
Logger.log('audio element event: playing');
// In the event timeupdate isn't firing, at least we can update when this happens
self.setCurrentTime(self.getCurrentTicks());
self.onPlaystateChange(this);
}).on("timeupdate.mediaplayerevent", onTimeUpdate);
// In the event timeupdate isn't firing, at least we can update when this happens
self.setCurrentTime(self.getCurrentTicks());
self.currentMediaRenderer = mediaRenderer;
self.currentDurationTicks = self.currentMediaSource.RunTimeTicks;
}).on("timeupdate.mediaplayerevent", onTimeUpdate);
mediaRenderer.init().done(function () {
self.currentMediaRenderer = mediaRenderer;
self.currentDurationTicks = self.currentMediaSource.RunTimeTicks;
// Set volume first to avoid an audible change
mediaRenderer.volume(initialVolume);
mediaRenderer.init().done(function () {
mediaRenderer.setCurrentSrc(streamInfo, item, mediaSource);
self.streamInfo = streamInfo;
// Set volume first to avoid an audible change
mediaRenderer.volume(initialVolume);
mediaRenderer.setCurrentSrc(streamInfo, item, mediaSource);
self.streamInfo = streamInfo;
});
});
}