В последнее время эта статья стала популярной на slashdot и других технических сайтах. TL; DR статьи - это стажер Microsoft, намекающий на то, что Google, возможно, намеренно снизил производительность рендеринга видео Edge на YouTube:
Я совсем недавно работал в команде Edge, и одна из причин, по которой мы решили прекратить использование EdgeHTML, заключалась в том, что Google продолжал вносить изменения на свои сайты, которые нарушали работу других браузеров, и мы не могли за ними поспевать. Например, недавно они добавили скрытый пустой блок div к видео на YouTube, из-за которого наш быстрый путь аппаратного ускорения отключается (теперь это должно быть исправлено в обновлении Win10 Oct). До этого наше довольно современное ускорение видео позволяло нам значительно опережать Chrome по времени воспроизведения видео от батареи, но почти в тот момент, когда они сломали что-то на YouTube, они начали рекламировать доминирование Chrome над Edge в отношении батареи для просмотра видео. жизнь. Это так грустно, так это то, что их заявленное доминирование произошло не из-за гениальной оптимизации Chrome, а из-за сбоя YouTube. В целом они только замедлили работу сети.
Моя первоначальная реакция на это была не «Вот это подозрительно…», а скорее «подожди минутку… Я почти уверен, что написал именно этот код». em>? »
Я видеоинженер, который написал видеопроигрыватель с нуля, и я независимо разместил пустой блок над нашим видеоэлементом. Вот исходный код для неверующих (заранее извиняюсь за Angular):
‹Div class =» ie-idiot-shield noselect »ng-if =» customSkinSupported »ng-click =» togglePlayPause ($ event) »› ‹/div›
…
// В IE есть безумные обработчики нажатия клавиш, которые полностью крадут * все * и совершают ужасные вещи со всей нашей логикой.
// Пока я не нашел способа отключить проигрыватель, когда он находится в фокусе. Поэтому мы используем этот экран для наложения искусственного окна
// поверх IE, чтобы никто не мог его выбрать.
.ie-idiot-shield {
position: absolute;
ширина: 100%;
высота: 100%;
фон: rgba (0,0,0,0.0);
z-index: 3;
}
Вот сообщение git commit (8/2015):
Наконец, исправление безумной логики нажатия клавиш в IE.
Наложив невыбираемый прозрачный элемент поверх моего видеоэлемента, я могу эффективно предотвратить его выбор, и это позволяет избежать огромного количества кошмарной логики нажатия клавиш, которая существует в настоящее время. Я немного уберу другую хакерскую хрень в библиотеке html5, но это должно облегчить мне жизнь.
Вот альтернативная гипотеза того, что могло произойти в Google:
- Какой-то менеджер по продуктам на YouTube решил, что доступность - главная инициатива. Потому что, понимаете, слепые.
- Они хотели добавить в свой видеоплеер стандартную логику нажатия клавиш.
- Они быстро поняли, что нет: в ‹видео /› такого нет. (эта тема, вероятно, требует отдельного сообщения в блоге; одним из основных упущений стандарта является стандартизованная доступность во всех реализациях, ИМО)
- Они быстро поняли, что некоторые браузеры отвратительны, и вы хотите полностью заблокировать их обработчики нажатия клавиш.
- Какой-то программист нашел обходной путь. То же самое, что и я.
- Какое-то совершенно отдельное подразделение бизнеса решило обсудить время автономной работы. Мы говорим о компании с 85 000 сотрудников, так что вряд ли это будет неправдоподобно.
Зная это, следует помнить о нескольких вещах:
- Заявление стажера MSFT попахивает кем-то, кто слишком быстро приписывает злой умысел там, где такое обвинение неуместно.
- «Современный» движок рендеринга? Что ж, очевидно, этого недостаточно, чтобы справиться с явно очевидным тестовым случаем. Он не может справиться с чем-то поверх него. Это не "современное искусство".
- Что именно не так в размещении другого HTML-элемента поверх видеоэлемента? Вся суть элемента видео в том, что это законная часть DOM, а не какой-то паршивый тег ‹object›, как это было до HTML5. На 100% законно помещать пустой div поверх видеоэлемента или почти любого другого элемента в этом отношении. Добро пожаловать в Интернет.
- Зачем уже доминирующему на рынке браузеру стараться изо всех сил нанести вред какому-то второстепенному игроку в этой области? И чтобы искалечить их на одиночном сайте потокового видео (как насчет netflix, hulu, prime и т. Д.)? И прекрасно зная, что 95% веб-пользователей искренне не заботятся? Аргумент не проходит проверку запахом.
Как видеоинженер, я должен сказать следующее:
- Реализация Edge WebRTC - отстой.
- Реализация тега видео в Edge - это смешивающий фактор, который я не пропущу.
- В Edge отсутствует MediaRecorder, несмотря на неоднократные запросы в MSFT о его внедрении. Вы когда-нибудь реализовывали версию libvpx и libopus для веб-сборки? У меня есть. Ты знаешь почему? Край.
Да, Chrome - это монокультура, но это похоже на то, что весь коллектив программистов игнорирует, что это монокультура по какой-то причине. Это монокультура, потому что ее предпочитают потребители. Если, как разработчики, мы не хотим монокультуры, наш единственный выход - сделать продукт более привлекательным для потребителей.