http://protofunc.com/jme/ медиаплеер, как синхронизировать 2 ползунка времени (при ручном перемещении) - PullRequest
0 голосов
/ 21 марта 2012

Нужна действительно помощь о html5-игроках с http://protofunc.com/jme/

Это обеспечивает довольно прохладный API, но, возможно, недостаточно для моих нужд. http://protofunc.com/jme/documentation/documentation-api.html

У меня есть 2 игрока одновременно (1 видео, 1 аудио для аудио описание ) Я ищу способ синхронизации ручных движений ползунка ручки игрового положения .timeline-slider .ui-slider-handle (прямое / обратное игровое положение).

Если воспроизведение может быть синхронизировано, пример для игры (та же идея для паузы)

$(document).bind('play', function(e){
                            // $('video, audio').not(e.target).pause();
                            $('video, audio').not(e.target).play();
                        });

При манипулировании одним из дескрипторов .ui-slider-handle он также получает ui-state-active. Таким образом, должно быть возможно узнать, к какому из них (аудио или видео) прикоснуться и уйти, а затем управлять другим, чтобы отразить слайд времени (форсировать его положение с помощью «.currentTime (myvalue)».

Я сделал много попыток, как эта, но она обрабатывается все время, не только при перемещении ручек, так что это проблема производительности:

  $('audio, video').bind('timechange', function(e, data){
newTime = data.time;
dnewTime = newTime - oldTime;// delta T (sec)
oldTime = newTime;
if (( dnewTime > 1) || (dnewTime < -1)) // handler has been moved widely delta time is big
{
$('video, audio').not(e.target).currentTime(newTime);
};
$('#jmeLog').html('newTime: '+ newTime + ' | dT: ' + dnewTime );
});

1 Ответ

0 голосов
/ 22 марта 2012

Я ничего не знаю о плеере protofunc, но в html5 мой код в темноте будет выглядеть как

yourVideoPlayer.addEventListener('seeked', function(){
    synchronizeMyTwoElements( yourVideoPlayer.currentTime );
});

 yourAudioElement.addEventListener('seeked', function(){      //not sure if it's seeked or onchange -> u have to check
    synchronizeMyTwoElements( yourAudioElement.currentTime );
});

//...
function synchronizeMyTwoElements( seekToTime ){
     yourVideoPlayer.currentTime = seekToTime;
     yourAudioElement.currentTime = seekToTime;
}
...