gpt4 book ai didi

javascript - SoundCloud JavaScript API v. 3 SC.stream 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:07 25 4
gpt4 key购买 nike

我正在将我的代码从 Soundcloud Javascript API v. 1 升级到最新版本。我已经能够迁移 90% 的代码,但在尝试流式传输一些 轨道时出现奇怪的行为。我想我已经为“玩家”对象实现了所有必需的监听器,但我无法理解问题出在哪里。这是我的代码片段:

                    try {
SC.stream( "/tracks/" + playlist[ now_playing ].sndc_id ).then(
function (player) {
sound_object = player;
sound_object.on(
'state-change',
function() {
console.log('state-change', this.controller._state);
}
).on(
'play',
function() {
console.log('play');
}
).on(
'play-start',
function() {
console.log('playback started');
playing = true;
show();
play();
updateInfo();
}
).on(
'buffering_start',
function() {
console.log('buffering starts');
}
).on(
'buffering_end',
function() {
console.log('buffering ends');
}
).on(
'time',
function() {
console.log( this.currentTime() );
updateProgress(this.currentTime(), playlist[ now_playing ].duration);
}
).on(
'finish',
function() {
console.log('finish');
loadNext();
}
).on(
'pause',
function() {
console.log('pause');
}
).on(
'play-resume',
function() {
console.log('play-resume');
}
).on(
'geo_blocked',
function() {
console.log('geo_blocked');
loadNext();
}
).on(
'audio_error',
function() {
console.log('audio_error');
sendErrorReport(playlist[ now_playing ].id);
loadNext();
}
).on(
'no_streams',
function() {
console.log('no_streams');
sendErrorReport(playlist[ now_playing ].id);
loadNext();
}
).on(
'no_protocol',
function() {
console.log('no_protocol');
loadNext();
}
).on(
'no_connection',
function() {
console.log('no_connection');
loadNext();
}
);

sound_object.play();
},
function( e ) {
console.log( e );
loadNext();
}
);
} catch(e) {
console.log( e );
loadNext();
}

playlist 数组包含有效轨道 ID 的列表。我所做的是:

  • 开始直播
  • 开始播放后显示当前轨道的信息
  • 播放时,更新进度条

我注意到的第一件事是这个新 API 比以前的 API 慢得多;第二个奇怪的事情是事件没有按照我期望的顺序触发:

  1. 播放
  2. 缓冲启动
  3. 播放开始
  4. 缓冲结束
  5. 完成

有时 play-startbuffer-start 之前触发,当这种情况发生时,客户端会卡住。

第二个问题是我不时从 SoundCloud JS 文件中得到的 Javascript 错误,它没有被 try {} catch {} 表达式捕获,这是我的 JS 控制台的快照:

    play (index):692
(5x) state-change initialize (index):711
(8x) buffering starts
(3x) sdk-3.0.0.js:12
Uncaught Error: Error: An invalid exception was thrown.
i.setVolume @ sdk-3.0.0.js:12
i.createAudioPlayer @ sdk-3.0.0.js:8
o @ sdk-3.0.0.js:13
(anonymous function) @ sdk-3.0.0.js:13
(anonymous function) @ sdk-3.0.0.js:18
p @ sdk-3.0.0.js:13
d.fireWith @ sdk-3.0.0.js:13
d.fire @ sdk-3.0.0.js:13
(anonymous function) @ sdk-3.0.0.js:13
(anonymous function) @ sdk-3.0.0.js:18
p @ sdk-3.0.0.js:13
d.fireWith @ sdk-3.0.0.js:13
d.fire @ sdk-3.0.0.js:13
u.onreadystatechange @ sdk-3.0.0.js:13

由于 SDK 文件被缩小了,我真的很难找到问题所在。

我想知道是否有人已经遇到过这些问题,以及是否存在解决方案。我注意到错误事件永远不会被调用,即使轨道实际上返回错误(比如在控制台中您看到轨道的 404 错误),这对我来说也很奇怪。

提前谢谢你,S。

最佳答案

您可以通过设置播放器选项属性来强制使用 http 协议(protocol),如下所示:player.options.protocols = ['http'];

关于javascript - SoundCloud JavaScript API v. 3 SC.stream 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com