2

我搜索了网络,升级了播放器,重写了 5 次,现在完成了我失败的第五天,但仍然无法完成 Longtail 的人告诉我的工作。(不要误会我的意思,我喜欢那里的他们,但这让我准备好从桥上跳下来)。

我只是想加载一个可以在 Flash 或 iOS 上播放的视频,并在加载后立即使用该.seek()方法转到视频中的特定点。Longtail 告诉我使用该onBeforePlay()功能,因为 iOS 显然不尊重播放列表的起始值。此代码在 Flash 中的工作方式类似于烟雾,但忽略了 iOS 中的搜索。

任何人都可以帮我解决这个问题 - 它已成为我编写过的最昂贵的脚本,而且我的进展完全为零。:( :( :( 另外,我删除了所有控制台功能并进行了尝试,但结果相同。

完整的代码/播放器可以在http://www.tempurl.us/jw6e.html看到。你可以看到,在 Flash 中,视频从 60 秒开始,但在 iOS 上,它从 0 秒开始。

jwp = jwplayer('jwp').setup({
    title: 'Single File Player', width: '720', height:'240', autostart: 'false', listbar: {position: "right",size: 400},
    sources:[
       {   file: 'http://media3.scctv.net/insight/mp4:nursing_4_clips_400.mp4/playlist.m3u8'},
       {   file: 'rtmp://fms.scctv.net/insight/nursing_4_clips_400.mp4'}
    ]
    }
);
jwp.onReady(function() {
    // Create a playlist item of the video to play
    var newItem = [
       {   title: 'Title4 ACUTE_ABDO_PAIN_400',
          image: 'playlistitem.png',
          sources:[
             {   file: 'http://media3.scctv.net/insight/mp4:ACUTE_ABDO_PAIN_400.mp4/playlist.m3u8'},
             {   file: 'rtmp://fms.scctv.net/insight/ACUTE_ABDO_PAIN_400.mp4'}
          ]
       }
    ];
    jwp.load(newItem);
});
jwp.onBeforePlay(function() {
     // This Works on PC/Mac with Flash, but does nothing on iPad/iPhone
     jwp.seek(60);
});
4

4 回答 4

0

简单地结束这个问题,这个问题的底线是iOS不允许自动启动 - 期间。知道这一点,所有未按预期运行的预期事件都是有道理的。一旦用户使用 Play 启动流,一切都会按预期进行。在我们的例子中,这仍然是一个问题,因为我们想在流的后面开始,但是知道这使得处理它更容易管理。

于 2014-01-21T15:17:35.947 回答
0

如果问题是 iOS 将不允许自动启动 - 期间。知道这一点,所有未按预期运行的预期事件都是有道理的。一旦用户使用 Play 启动流,一切都按预期工作

那么你可以有一个仅适用于平板电脑和 ios 设备的播放按钮,然后单击播放按钮,调用jwplayer().play(),这可能是你的问题的解决方法,并且在你调用 jwplayer.play 之后,这只能通过触摸事件来实现,触发播放后,其他事件将起作用。

否则,即使您尝试 jwplayer().play() onReady(),或者自动启动也不会起作用,因为 iOs 不会像您说的那样允许自动启动

于 2014-05-12T14:37:18.303 回答
0

我已经在 iOS 上使用 onBeforePlay 和 seek() 和 play() 解决了这个问题。这适用于桌面闪存和 IOS。使用参数 androidhls:true 在 Android 上不起作用

jwplayer().onBeforePlay(function() { jwplayer().seek(60); });
jwplayer().play();
于 2014-10-01T16:07:03.113 回答
0

正如 Ethan JWPlayer 在评论使用onPlay事件中提到的那样。如您所说,为了防止“循环缓冲”,只需使用标志变量:

var isFirstStart = true,
    seekValue    = 60;

jwplayer().onPlay(function(){
    //exit if it's no first playback start
    if( !isFirstStart ) {
        return;
    }

    jwplayer().seek(seekValue);
    isFirstStart = false;
});
于 2015-05-14T06:17:54.893 回答