почему javascript `for` loop быстро отключает / включает звук - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть собственное приложение electron для воспроизведения видео с фильтрами.Исходный код здесь .На большинстве компьютеров код работает безупречно, но на компьютере, где видео показывается классу учащихся, когда применяется фильтр mute, player.mute() и player.unmute() быстро чередуются много раз в секунду.Это происходит только для некоторых фильтров mute в некоторых фильмах на некоторых компьютерах.Мне нужна помощь, чтобы отследить источник проблемы.

Соответствующая часть этого вопроса (я думаю) находится в script.js, строки 224-258 .

        for (var i = 0; i < numAnnotations; i++) {
          var vMuted = player.video_obj.muted
          var vBlanked = player.video_obj.classList.contains('blanked')
          var vBlurred = player.video_obj.classList.contains('blurred')

          var a = player.annotations[i]
          var aStart = a['start']
          var aEnd = a['end']
          var aType = a['type']
          var aDetails = a['details']

          switch (a['type']) {
            case 'skip':
              if (time >= aStart && time < aEnd) {
                console.log('skipped to '+Number(aEnd).toFixed(3))
                player.skip_to(aEnd)
              }
              break
            case 'mute':
            case 'mutePlugin':
              if (currently.muting === -1 || currently.muting === i) { //if no annotation is currently muting or *this* current annotaiton is muting
                if (time >= aStart && time < aEnd) { //if within annotation time
                  if (!vMuted) {
                    console.log('mute on')
                    currently.muting = i
                    player.mute()
                  }
                } else {
                  if (vMuted) {
                    console.log('mute off')
                    currently.muting = -1
                    player.unmute()
                  }
                }
              }

Этот код обычно работает без нареканий, но иногда он дает сбой в очень неудобное время.В чем причина проблемы или как я могу ее самостоятельно отладить?

1 Ответ

0 голосов
/ 24 апреля 2019

Оказывается, проблема была только с видео, которые были загружены не первыми после запуска плеера.Нам удалось отследить, что мы получаем несколько EventListener, которые боролись друг с другом.Нам просто нужно было добавить трекер, чтобы добавлять слушателей событий, только когда они еще не существовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...