带有 Icecast 流的 jPlayer:暂停后如何从实时位置(不是最后一个位置)播放流?

jPlayer with Icecast stream: how to play stream from live position (not last position) after pause?

我有a website that plays an icecast stream with jPlayer.

我希望 play 按钮始终从实时位置(如收音机)开始播放流,而不是从最后一个位置重新开始播放。尝试的行为: play 实时播放流 > pause 暂停/丢弃流/可选择停止下载 > play 从实时位置播放流/重新加载流。

comment on this post 所述,有一种方法可以使用 $.jPlayer.event.timeupdate 监视当前媒体位置,并使用它从流的末尾继续播放。

或者,必须有一种方法可以在暂停时丢弃流,然后在再次点击 play 时重新加载它。我认为这就是 this jPlayer demo 上发生的事情。但我不知道该怎么做:

The error event is used with a check for the URL_NOT_SET error type to jPlayer("setMedia",stream) back to the live-stream again and jPlayer("play") it.

我是 javascript 的新手,无法使用它。我找不到另一个 post 试图这样做的人。我尝试使用 100 的“播放头”,它根本不启动流。

这是我使用的代码:

<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
  $("#jquery_jplayer_1").jPlayer({
        ready: function () {
            $(this).jPlayer("setMedia", {
                mp3: "http://realbadradio.ddns.net:21000/mpd.mp3"
            })
        },
    });
});
//]]>
</script>

Here the repo 到我的网站获取完整代码。

由于 在与在 jPlayer 中实现自动播放相关的不同问题上,我终于找到了解决方案。

解决方案

$(document).ready(function(){
  const stream = {
    // stream address
    mp3: 'http://realbadradio.ddns.net:21000/mpd.mp3'
  };
  ready = false;
  $("#jquery_jplayer_1").jPlayer({
    ready: function () {
      ready = true;
      $(this).jPlayer("setMedia", stream);
    },
    pause: function() {
      $(this).jPlayer("clearMedia");
    },
    error: function(event) {
      if(ready && event.jPlayer.error.type === $.jPlayer.error.URL_NOT_SET) {
        // Setup the media stream again and play it.
        $(this).jPlayer("setMedia", stream).jPlayer("play");
      }
    },
    keyEnabled: true,
    preload: 'none',
  });
});