Skip to content

Commit 5c28d70

Browse files
authored
Merge pull request #92 from soundcloud/update-playback-lib
update playback library
2 parents 47a6a78 + d009fc7 commit 5c28d70

File tree

5 files changed

+37
-29
lines changed

5 files changed

+37
-29
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ sc-vendor-libs: node_modules
5151
@sc/scaudio-public-api-stream-url-retriever \
5252
@sc/maestro-core \
5353
@sc/maestro-loaders \
54-
@sc/maestro-html5-player \
55-
@sc/maestro-hls-mse-player
54+
@sc/scaudio-controller-html5-player \
55+
@sc/scaudio-controller-hls-mse-player
5656
$(NPM_BIN) run buildPlayback
5757

5858
$(NPM_BIN): $(DESTDIR)/usr/lib/$(NODE)/bin/node

src/player-api.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const BackboneEvents = require('backbone-events-standalone');
22
const { errors: { PlayerFatalError }, State } = require('../vendor/playback/playback').MaestroCore;
3-
const { errors: { GeoBlockedError, NoStreamsError, TimedOutError, NotSupportedError } } = require('../vendor/playback/playback').SCAudio;
3+
const { errors: { NoStreamsError, NotSupportedError } } = require('../vendor/playback/playback').SCAudio;
44

55
const TIMEUPDATE_INTERVAL = 1000 / 60;
66

@@ -57,12 +57,8 @@ module.exports = function(scaudioPlayer) {
5757
scaudioPlayer.onLoadEnd.subscribe(() => playerApi.trigger('buffering_end'));
5858
scaudioPlayer.onEnded.subscribe(() => playerApi.trigger('finish'));
5959
scaudioPlayer.onError.subscribe((error) => {
60-
if (error instanceof GeoBlockedError) {
61-
playerApi.trigger('geo_blocked');
62-
} else if (error instanceof NoStreamsError) {
60+
if (error instanceof NoStreamsError) {
6361
playerApi.trigger('no_streams');
64-
} else if (error instanceof TimedOutError) {
65-
playerApi.trigger('no_connection');
6662
} else if (error instanceof NotSupportedError) {
6763
playerApi.trigger('no_protocol');
6864
} else if (error instanceof PlayerFatalError) {

src/stream.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ const api = require('./api');
22
const config = require('./config');
33
const playerApi = require('./player-api');
44
const SCAudio = require('../vendor/playback/playback').SCAudio;
5+
const maestroLogger = require('../vendor/playback/playback').MaestroCore.logger;
56
const StreamUrlRetriever = require('../vendor/playback/playback').SCAudioPublicApiStreamURLRetriever.StreamUrlRetriever;
6-
const MaestroHTML5Player = require('../vendor/playback/playback').MaestroHTML5Player.HTML5Player;
7-
const MaestroHLSMSEPlayer = require('../vendor/playback/playback').MaestroHLSMSEPlayer.HLSMSEPlayer;
7+
const MediaElementManager = require('../vendor/playback/playback').SCAudioControllerHTML5Player.MediaElementManager;
8+
const HTML5PlayerController = require('../vendor/playback/playback').SCAudioControllerHTML5Player.HTML5PlayerController;
9+
const HLSMSEPlayerController = require('../vendor/playback/playback').SCAudioControllerHLSMSEPlayer.HLSMSEPlayerController;
810
const stringLoader = require('../vendor/playback/playback').MaestroLoaders.stringLoader;
911

10-
const SNIPPET_FADEOUT = 3000; // ms
12+
const mediaElementManager = new MediaElementManager('audio', maestroLogger.noOpLogger);
1113

1214
/**
1315
* Fetches track info and instantiates a player for the track
@@ -42,11 +44,18 @@ module.exports = (trackPath, secretToken) => {
4244
loader: stringLoader
4345
});
4446

45-
const player = SCAudio.buildPlayer({
46-
playerClasses: [ MaestroHTML5Player, MaestroHLSMSEPlayer ],
47+
const player = new SCAudio.Player({
48+
controllers: [
49+
new HLSMSEPlayerController(mediaElementManager),
50+
new HTML5PlayerController(mediaElementManager)
51+
],
4752
streamUrlRetriever,
48-
fadeOutDuration: track.policy === 'SNIP' ? SNIPPET_FADEOUT : 0
53+
getURLOpts: { preview: track.policy === 'SNIP' },
54+
streamUrlsExpire: true,
55+
mediaSessionEnabled: true,
56+
logger: maestroLogger.noOpLogger
4957
});
58+
5059
player.onPlay.subscribe(() => {
5160
if (!playRegistered) {
5261
playRegistered = true;
@@ -72,5 +81,5 @@ module.exports = (trackPath, secretToken) => {
7281
* can start even if `play()` is not from a user interaction.
7382
*/
7483
module.exports.activateAudioElement = () => {
75-
SCAudio.activateAudioElement();
84+
mediaElementManager.activate();
7685
};

vendor/playback/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module.exports = {
22
SCAudio: require('@sc/scaudio'),
3+
SCAudioControllerHTML5Player: require('@sc/scaudio-controller-html5-player'),
4+
SCAudioControllerHLSMSEPlayer: require('@sc/scaudio-controller-hls-mse-player'),
35
SCAudioPublicApiStreamURLRetriever: require('@sc/scaudio-public-api-stream-url-retriever'),
46
MaestroCore: require('@sc/maestro-core'),
5-
MaestroLoaders: require('@sc/maestro-loaders'),
6-
MaestroHTML5Player: require('@sc/maestro-html5-player'),
7-
MaestroHLSMSEPlayer: require('@sc/maestro-hls-mse-player')
8-
};
7+
MaestroLoaders: require('@sc/maestro-loaders')
8+
};

vendor/playback/playback.js

Lines changed: 13 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)