Изменение скорости воспроизведения видео HTML5

496
Mark Messa

В Firefox вы можете контролировать скорость воспроизведения видео HTML5, нажав F12и набрав в консоли:

document.getElementsByTagName("video")[0].playbackRate = 1 

Хотя этот метод достаточно общий (до 4x со звуком и до 16x (?) Без звука), это несколько неудобно делать вручную. Было бы неплохо иметь ярлык и, кроме того, способ установить значение по умолчанию для всех воспроизведений.

Есть пара дополнений Firefox, которые, кажется, решают эти проблемы (то есть ярлык и значение по умолчанию):

Однако, согласно Википедии, существуют некоторые угрозы безопасности, связанные с надстройками.

Вопросы

  1. Можно ли решить вышеупомянутые проблемы без дополнений?
  2. Эти дополнения безопасны?
2
Я голосую, чтобы закрыть этот вопрос как не по теме, потому что похоже, что он здесь для продвижения определенного расширения Firefox Sir Adelaide 5 лет назад 0
@SirAdelaide Несколько странно продвигать конкретное дополнение, подчеркивая риски безопасности, связанные с ним, и даже запрашивая другие рекомендации по дополнению. Mark Messa 5 лет назад 0
извини, просто чувствую себя особенно параноиком сегодня. Тем более, что «согласно Википедии» немного подняло красные флаги со мной, так как риск запуска чужого кода должен быть очевиден почти всем. Снижение риска из-за того, что код доступен для тестирования другими пользователями (он связан со страницей надстройки), также является реальным (хотя и не защищенным от ошибок), поэтому угол безопасности выглядел как прикрытие / отклонение. Запросы рекомендаций по продукту не по теме. 5 вопросов одновременно делают вопрос слишком широким. Взятые вместе эти вопросы, вот почему я проголосовал за закрытие. Sir Adelaide 5 лет назад 0
По словам [справочного центра], этот вопрос по-прежнему не относится к теме: «речь идет не о… сайтах или веб-службах, таких как Facebook, Twitter и WordPress». Nathan.Eilisha Shiraini 5 лет назад 0
Только для записей: порядок дополнений на основе порядка поиска Google. Mark Messa 5 лет назад 0
@ Nathan.EilishaShiraini Этот вопрос не о конкретном веб-сервисе, а о функции Firefox в целом. gronostaj 5 лет назад 1
"Эти дополнения безопасны?" Нужно больше разъяснений. Это вредоносное ПО? Они конфликтуют с другими надстройками и вызывают проблемы? Открывают ли они эксплойты? Они безопасны по отношению к чему-то еще? Могут ли они повредить файлы? Без объяснения того, что вы подразумеваете под сейфом, эта часть слишком открыта. fixer1234 5 лет назад 0

1 ответ на вопрос

4
gronostaj

Вы можете избежать использования расширений с букмарклетами. Букмарклет - это закладка браузера, которая на самом деле не открывает веб-страницу, а выполняет фрагмент Javascript. Букмарклеты используют javascript:псевдопротокол.

Например, создайте закладку с этим URL:

javascript:(function() 2>/dev/null; echo_and_restore "Command failed!" 

и как вы уже догадались, echo_and_restoreисполняется всегда, безоговорочно. Учитывая, что set +xчасть не выполнялась, это означает, что содержимое этой функции также будет напечатано.

Изменение последнего, ;чтобы &&не сработало, потому что в Bash, ||и &&являются левоассоциативные .

Я нашел модификацию, которая работает для этого варианта использования:

echo_and_restore() { echo "$(cat -)" case "$save_flags" in (*x*) set -x esac } alias echo='({ save_flags="$-"; set +x; } 2>/dev/null; echo_and_restore) <<<' 

Он использует подоболочку ( (...)часть), чтобы сгруппировать все команды, а затем передает входную строку через stdin как Here String ( <<<вещь), которая затем печатается cat -. Опция -необязательна, но вы знаете, « явное лучше, чем неявное ».

Вы также можете использовать cat -напрямую без echo, но мне нравится этот способ, потому что он позволяет мне добавлять любые другие строки в вывод. Например, я склонен использовать это так:

BASENAME="$(basename "$0")" # Complete file name ... echo "[$] $(cat -)" 

И теперь это работает прекрасно:

false || echo "Command failed" > [test.sh] Command failed 
Не удалось заставить его работать с вашим кодом. Не должно быть так: `javascript: (function () ) ();` Mark Messa 5 лет назад 1
@MarkMessa Честно говоря, я не проверял это, потому что я не использую Firefox. Возможно, браузер неправильно анализирует это назначение, и оно должно быть заключено в скобки или IIFE, как вы это сделали. Если вы можете подтвердить, что ваша версия работает, я обновлю свой ответ. gronostaj 5 лет назад 0
_ "это должно быть заключено в скобки" _ Я пробовал это раньше, но это не сработало. Mark Messa 5 лет назад 0
_ «Если вы можете подтвердить, что ваша версия работает, я обновлю свой ответ.» _ Действительно, это сработало. Mark Messa 5 лет назад 1