Как настроить видеокодек в браузере
Яндекс Браузер умеет открывать видеофайлы с расширениями mp4 , swf , avi , webm , mpg , ogv , x-m4v , wmv , m4v .
Видеофайлы с расширениями mov , quicktime и flv не поддерживаются.
Просмотр видео в отдельном окне
Примечание. Видео появляется в отдельном окне, если вы запустили видео сами или оно играет со звуком. В режиме Инкогнито видео нельзя вынести в отдельное окно.
Вы можете просматривать видео в отдельном окне Браузера. Например, можно одновременно запустить программу и видеоинструкцию к ней. Окно с видеоплеером отображается поверх всех остальных окон, в какой бы программе вы ни работали. Окно можно перетащить в любое место экрана или изменить размеры окна. Если свернуть Браузер, видео продолжит проигрываться. Если видео в формате HTML5 содержит субтитры (например, на YouTube у таких видео есть значок на панели управления), они тоже появятся в новом окне.
По умолчанию видео открывается в отдельном окне, когда вы переключаетесь на другую вкладку или программу. Если этого не случилось, наведите указатель мыши на верхнюю часть видеоплеера и нажмите значок .
Для быстрого управления используйте горячие клавиши.
Поставить на паузу / снять с паузы | Space |
Перемотать на 5 секунд вперед | → |
Перемотать на 5 секунд назад | ← |
Поставить на паузу / снять с паузы | Space |
Перемотать на 5 секунд вперед | → |
Перемотать на 5 секунд назад | ← |
Вы также можете замедлить или ускорить видео. Для этого нажмите → Скорость и выберите из списка нужное значение.
Вы можете скрыть кнопку выноса видео или автоматическое воспроизведение видео в другом окне:
В блоке Просмотр видео поверх других вкладок и программ отключите опцию Показывать на видеороликах кнопку для выноса видео или Автоматически открывать видео в отдельном окне .
Если вы хотите запретить вынос видео в отдельное окно, отключите обе опции.
Перевод и озвучка видео
Смотрите видео на русском языке с помощью функции закадрового перевода.
Прекращение поддержки Flash
Технология Flash использовалась в браузерах для воспроизведения мультимедийных файлов и запуска игр. Ее поддержку и распространение Adobe прекратила с 2021 года.
Большинство сайтов уже используют другие форматы воспроизведения контента — например, HTML5 или WebGL. Эти находящиеся в открытом доступе технологии работают быстрее и стабильнее, тратят меньше энергии, и они значительно безопаснее Flash.
Если вы посещаете сайт, использующий Flash, обратитесь в службу поддержки этого ресурса.
Проблемы с видео
Если владелец сайта запретил открывать файл в браузере, файл загружается на компьютер пользователя. Чтобы открыть его в Браузере, перетащите в окно Браузера значок загруженного файла, появившийся справа от Умной строки , или нажмите клавиши Ctrl + O и выберите нужный файл в папке Загрузки.
Если в Браузере вместо видео отображается черный экран, дрожит изображение в онлайн-играх, видео долго загружается, постоянно тормозит или останавливается\nпри переходе в полноэкранный режим, попробуйте решить проблему одним из способов.
Попробуйте включить или отключить аппаратное ускорение:
Если в блоке Производительность включена опция Использовать аппаратное ускорение, если возможно — отключите ее. Если эта опция отключена, включите ее.
Проверьте, решена ли проблема.
Проверьте, решена ли проблема.
Если проблема осталась, напишите нам. В письме укажите, что драйверы обновлены.
Устаревший Браузер может не поддерживать технологии для быстрой загрузки видео. Установите последнюю версию Браузера .
Некоторые сервисы для защиты контента используют уникальные идентификаторы устройств. Чтобы они работали, в блоке Идентификаторы защищенного контента включите опцию (только для Windows) Разрешить сайтам использовать идентификаторы для воспроизведения защищенного контента .
Браузер больше не поддерживает модуль NPAPI, на основе которого сделан Unity Web Player. Эта технология устарела, компания Unity также перестала поддерживать этот модуль.
Если не воспроизводится видео в формате HTML5 или видео c защищенным контентом (например, на Кинопоиске) :
Если у вас актуальная версия Браузера, выполните в консоли команду sudo /путь до папки браузера/browser/update-ffmpeg . По умолчанию браузер устанавливается в opt/yandex/browser .
При переходе на некоторые сайты автоматически начинает проигрываться видео. К сожалению, в Браузере нет возможности запретить автозапуск видео на сайте.
Проверьте, распознаётся ли камера другими программами.
Если да, укажите ее вручную в настройках Браузера:
Если это не помогло, напишите в службу поддержки Браузера.
Проверьте версию Windows:
Выберите версию Windows:
Напишите нам через форму.
Закройте Браузер. Для этого нажмите → Дополнительно → Закрыть браузер либо клавиши Ctrl + Shift + Q .
Если это не помогло, напишите нам через форму.
Скачайте и установите Media Feature Pack для Windows 8 N/KN.
Скачайте и установите Media Feature Pack для Windows 8.1 N/KN.
Скачайте и установите Media Feature Pack для Windows 10 N/KN.
О решении проблем со звуком в видео см. раздел Проблемы со звуком.
Видео каких форматов можно проигрывать в Браузере?
Яндекс Браузер умеет открывать видеофайлы с расширениями mp4 , swf , avi , webm , mpg , ogv , x-m4v , wmv , m4v .
Видеофайлы с расширениями mov , quicktime и flv не поддерживаются.
Просмотр видео в отдельном окне
Примечание. Видео появляется в отдельном окне, если вы запустили видео сами или оно играет со звуком. В режиме Инкогнито видео нельзя вынести в отдельное окно.
Вы можете просматривать видео в отдельном окне Браузера. Например, можно одновременно запустить программу и видеоинструкцию к ней. Окно с видеоплеером отображается поверх всех остальных окон, в какой бы программе вы ни работали. Окно можно перетащить в любое место экрана или изменить размеры окна. Если свернуть Браузер, видео продолжит проигрываться. Если видео в формате HTML5 содержит субтитры (например, на YouTube у таких видео есть значок на панели управления), они тоже появятся в новом окне.
По умолчанию видео открывается в отдельном окне, когда вы переключаетесь на другую вкладку или программу. Если этого не случилось, наведите указатель мыши на верхнюю часть видеоплеера и нажмите значок .
Совет. Вы можете поменять расположение значка , перетащив его мышью в нужное место видеоплеера.
Свершилось то, чего многие ожидали — крупнейшие видеосервисы (YouTube, Vimeo) предоставили в режиме бета-тестирования возможность воспроизводить ролики средствами HTML5. Казалось бы, всё прекрасно, и Flash-у пора уйти на заслуженный покой. Ан нет — оказалось всё не так гладко.
А разгадка одна — кодеки. Разработчики браузеров и поставщики контента не сошлись во мнении, какой кодек для видео использовать. На самом деле, эта проблема обсуждалась и ранее, и консенсуса по ней так и нет. В итоге из черновой спецификации HTML5 были удалены упоминания о конкретном кодеке.
Кодеки
На звание кодека для HTML5 video в данный момент претендуют два кодека — Ogg Theora и H.264.
Ogg Theora
Использовать Ogg Theora можно везде, всегда, без лицензионных или патентных отчислений.
H.264 — это лицензируемый стандарт сжатия видео. Его использование требует платы в странах, где действует патенты на него (в первую очередь, это США). Однако, на сегодняшний день, это один из самых лучших способов сжимать видео. Именно H.264 является стандартом де-факто сжатия HD-видео, к примеру. H.264 заметно эффективнее Ogg Theora по соотношению качество/битрейт.
Если кратко, H.264 — лучше, но даже его open-source реализации не могут быть использованы свободно в странах, где действуют патенты на него.
Реализации в современных браузерах
Здесь я упоминаю только те браузеры, в которых HTML5 video работает уже сейчас.
Mozilla Firefox
Реализация использует библиотеку liboggplay, а это означает, что могут использоваться только Ogg Theora для видео и Ogg Vorbis для аудио. Т.е. кодек фиксирован, и чтобы сделать поддержку чего-то ещё, нужно по сути переписать реализацию.
Google Chrome
Реализация использует статически привязанный ffmpeg. ffmpeg поддерживает кучу разных кодеков, включая и Ogg Theora, и H.264, и вообще практически всё, что сейчас реально используется.
К слову, ffmpeg в данный момент используется почти повсеместно — например, в CCCP и K-Lite Codec Pack, а также в mplayer и VLC используется именно ffmpeg.
Казалось бы, всё замечательно. Но! ffmpeg, хоть и open source, не может быть свободным в США. Для распространения программы, использующей ffmpeg, нужно платить отчисления. Google себе это может позволить, и имеет право выпускать билды со встроенным ffmpeg. Но совсем не такая ситуация с дистрибутивами Linux. Те из них, что выпускаются в США, не смогут включить в свои репозитории Chrome с поддержкой ffmpeg, так как это потребует платы отчислений. В первую очередь это касается такого небезызвестного дистрибутива, как Fedora.
Safari
Использует фреймворк QuickTime, что позволяет воспроизводить что угодно, если установлен соответствующий QuickTime-кодек.
Наверное, из современных реализаций эта наиболее правильная, т.к. имеет модульную архитектуру изначально. Но это всё сильно завязано на Mac OS, поэтому к остальным системам и браузерам неприменимо.
Суровая реальность
Теперь поговорим о поставщиках контента. Свобода, равенство, братство — это всё хорошо в теории, но на практике вопрос решается небольшими зеленоватыми бумажками с портретами американских президентов. Google-у как-то проще заплатить за лицензию на более эффективный кодек, чем платить больше за трафик, и место на серверах. Мало того, учитывая то, что у них и так всё видео хранится в H.264, было бы особенно глупо (с точки зрения бизнеса, естественно), перекодировать это всё в Ogg Theora. Так что решение использовать H.264 — это абсолютная, экономически оправданная, жизненная необходимость. YouTube не станет использовать Ogg Theora. Не выгодно. Точка.
А мало того, использование H.264 выгоднее и нам, конечным пользователям. Мы же не платим лицензионные отчисления, а, тем не менее, получаем лучшее качество видео при меньшем количестве загруженных данных (привет жителям не-столиц с хилыми каналами в интернеты).
Всё плохо?
Сейчас — да. Но! Есть выход. Для декодирования видео в браузере нужно использовать модульный подход, не привязываясь к определённому кодеку. Мало того, в каждой операционной системе уже и так есть модульная инфраструктура кодеков. В Windows — это DirectShow, в Mac OS X — это QuickTime, в Linux — это gstreamer. А gstreamer ещё и кроссплатформенный, между прочим, и уже используется в кроссплатформенных программах, к примеру, Songbird для воспроизведения музыки использует именно gstreamer на всех платформах.
Использование gstreamer решит все проблемы с кодеками в браузерах один раз и навсегда. В частности, не будет никаких проблем с патентами, так как браузер будет распространятся без защищённых патентами кодеков, но на системе пользователя он сможет найти установленный плагин для этого кодека, и использовать его.
А мало того, в gstreamer предусмотрена возможность использовать кодеки, установленные в родном для данной системы фреймворке (для Windows — DirectShow, для Mac OS — QuickTime).
Светлое будущее, наступит ли оно?
Mozilla Firefox
Собственно, вот. Но, судя по комментариям там, сейчас такая интеграция планируется только для Fennec. Честно говоря, я искренее недоумеваю по этому поводу. Поддержка H.264 для Firefox нужна, и быстро, иначе есть большой риск остаться за бортом.
Google Chrome
Беда. Я пытался вникнуть в причину отказа, но она мне показалось не слишком веской. В принципе, тут нечего добавить. Можно почитать обсуждение, оно довольно жаркое. Ещё можно проголосовать за этот баг (отметить звёздочкой). Мало ли…
Opera
Внезапно, маленькая, но очень упорная, норвежская компания показывает себя с очень хорошей стороны. Читаем, радуемся.
Другие браузеры
Неповоротливые гиганты легко могут оказаться позади маленьких, почти не используемых в широких массах браузеров, таких как Epiphany, Midori, Aurora. Все они используют WebKit. Epiphany и Midori используют GtkWebKit, в нём планируется (или уже сделана) поддержка HTML5 video через gstreamer. Aurora использует QtWebKit, в нём для HTML5 планируется (или уже частично сделано) использование Phonon, который, с свою очередь, может использовать разные бэкэнды, в том числе и gstreamer.
Однако, на текущий момент, ни в одном из них работающей поддержки HTML5 нет. Остаётся верить в их скорое светлое будущее, ведь оно вполне реально.
В этом руководстве мы научимся использовать видео в Вебе, как это принято в 2019. Chrome и Firefox начали поддерживать новый кодек AV1 — для них видео можно сделать в два раза меньше.
Отдельно поговорим, как заменить GIF на видео в AV1 и H.264 — тогда его размер упадёт в 20-40 раз.
YouTube уже использует его в TestTube. Netflix заявил, что AV1 будет «их основным кодеком следующего поколения».
Мы в Злых Марсианах уже используем его на нашем сайте и на Ампллифере. В этой статье я поделюсь опытом внедрения AV1 и шаг-за-шагом расскажу, как вставить видео, чтобы оно работало во всех браузерах.
Кодеки и контейнеры
С картинками всё просто: или JPEG с PNG для всех браузеров, или делать более компактные файлы в WebP для современных браузеров. Мы всегда можем быть уверены, что в файлах .jpg будет PNG-формат (за редким исключением PNG-бомб, от которых может защитить imgproxy).
С видео-файлами всё сложнее. Расширение файла ( .mp4 , .wmv , .webm или .mov ) говорит только о контейнере. В то время, как видео-файлы состоят из трёх различных компонентов:
- Видео-кодек определяет как сильно вы сможете сжать видео, и чем придётся пожертвовать. Основные видео-кодеки Веба: H.264, HEVC, VP9 и, теперь, AV1.
- Аудио-кодек сжимает звук. Само собой, он не нужен, если в видео нет звука. Популярные варианты: MP3, Opus и AAC.
- Контейнер хранит оба видео- (сжатого каким-то видео-кодеком) и аудио-потока (сжатого каким-то аудио-кодеком). А также дополнительные данные, типа субтитров и мета-информации. Популярные контейнеры: MP4, MOV, WebM.
Узрите AV1
AV1 — видео-кодек, который был выпущен год назад, в марте 2018. Его создавали, чтобы превзойти кодеки предыдущего поколения — HEVC, VP9, H.264 и VP8.
Диаграмма поколений кодеков от Цахи Левент-Леви
Если вам стало интересно, как именно AV1 удалось превзойти остальные кодеки в сжатии, почитайте технические подробности в переводах на Хабре:
«Видео следующего поколения: представляем AV1»
«Кодек нового поколения AV1: корректирующий направленный фильтр CDEF»
За счёт новых оптимизаций, AV1 сжимает видео на 30—50% лучше, чем H.264 или VP8, и до 30% лучше, чем HEVC. Но кодек был выпущен недавно и пока имеет несколько детских болезней:
- Текущий кодер не оптимизирован. AV1 сжимает видео очень медленно (новый быстрый кодер на Rust уже в разработке). Кодек не подойдёт для потокового вещания. Если мы говорим о статичных видео на лэндингах — эта проблема нам не актуальна.
- Пока кодек поддерживается только десктопным Chrome и Firefox под Windows. Поддержки Safari и Edge пока нет (хотя Microsoft уже тестирует её). Надо будет, как минимум, 2 файла: AV1 для Chrome и Firefox и H.264 для остальных браузеров.
Сравнение качества картинки у разных кодеков на разном битрейте — AV1 выигрывает
Готовим AV1 правильно
Давайте, наконец-то, перейдём к практике. Вначале определимся с контейнером. В теории, AV1 можно поместить в разные контейнеры, но MP4 компактнее и рекомендуется в спецификации. Для звука в AV1 мы возьмём Opus, потому что отлично сжимает звук.
Чтобы видео работало во всех браузерах, мы будем генерировать 3 файла:
- Для десктопного Chrome и Firefox на Windows (31% рынка на март 2019): контейнер MP4 с AV1 для видео и Opus для звука.
- Для Safari и Edge (16% рынка) — MP4 с HEVC и AAC.
- Для остальных: большой MP4-файл с H.264 и AAC.
Для сжатия я рекомендую взять консольный FFmpeg. Есть много графических утилит, но в консоли легче сохранить опции и потом запускать конвертацию автоматически. Убедитесь, что используете именно последнюю версию FFmpeg. Версии до 4.1 не поддерживают AV1 в MP4.
Переходим к конвертации файла H.264, который нужен нам для старых браузеров. Поскольку все наши файлы используют контейнер MP4, я буду использовать .av1.mp4 , .hevc.mp4 и .h264.mp4 постфиксы. Не пугайтесь длинной команды, мы потом её всю разберём:
Теперь откройте video.h264.mp4 . Если качество хорошее, а размер большой — попробуйте увеличить -crf ( -crf 26 потом -crf 28 ). Эта опция уменьшит размер файла ценой уменьшения качества. Подбор баланса качества и размера — искусство.
Теперь пришло время для конвертации AV1 — напоминаю, будет дольше H.264. Кодек пока не использует всю мощь процессора (имеет смысл запустить конвертацию нескольких файлов параллельно).
Снова поиграйте с -crf для подбора идеального баланса качества и размера.
Теперь то же самое для HEVC.
Скопируйте video.h264.mp4 , video.hevc.mp4 и video.av1.mp4 в корень вашего сайта.
Разбираемся с опциями FFmpeg
Команды выше выглядят как заклинание вызова демона? Не волнуйтесь, это не PostCSS. Давайте разберём опции.
-i SOURCE.mov указывает входящий файл, откуда FFmpeg возьмёт потоки видео и аудио, пережмёт их и запакует в новый контейнер.
-map_metadata -1 удалит мета-информацию из видео (например, программу, в которой видео было создано). В Вебе такая информация редко бывает полезной.
-c:a libopus или -c:a libfdk_aac выставляют аудио-кодеки. Если вам не нужен звук, замените их на -an .
-c:v libaom-av1 выбирает видео-кодек — библиотеку, которая сожмёт кадры видео-потока.
-crf 34 — Constant Rate Factor, баланс качества и размера. Это как слайдер качества JPEG, только он идёт в другом направлении (0 — лучшее качество и самый большой файл). Шкала CRF разная у H.264 и AV1 — у H.264 идёт до 51, у AV1 до 61. CRF для AV1 и H.264 будет разный.
Facebook подобрал примерное соответствие между значениями CRF для H.264 и AV1:
19 → 27, 23 → 33, 27 → 39, 31 → 45, 35 → 51, 39 → 57.
-preset veryslow заставляет H.264 и HEVC кодеки сжимать файл сильнее даже ценой резкого роста времени конвертации.
-profile:v main используется у H.264, чтобы выбрать профиль кодека. Только «Main» будет работать в Safari.
-b:v 0 выставляет минимальный битрейт для AV1, чтобы в видео было постоянное качество.
-pix_fmt yuv420p (формат пикселя) — хитрый способ уменьшить размер файла. Он оставляет оригинальное разрешение для яркости, но уменьшает разрешение для цвета. Наши глаза хуже видят цвет, поэтому не замечают эту хитрость. Удалите эту опцию, если в вашем случае она будет мешать.
-movflags +faststart перемещает всё само важное в начало файла, чтобы браузер мог проигрывать видео до окончания загрузки.
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" изменит размер сторон видео к ближайшим чётным (некоторые кодеки могут работать с разрешением 300×200 и 302×200, но не будут работать с 301×200). Если вы уверены, что везде разрешение делится на 2 — можете убрать эту опцию.
-strict experimental нужна для AV1, его кодер ещё экспериментальный.
video.av1.mp4 выставляет имя итогово файла.
Запускаем видео в браузерах
Теперь нам нужно, чтобы каждый браузер загружал видео, которое он поддерживает. Для этого у есть атрибут type . И советую почитать про опции у .
похожи на выражения if…else — браузер читает их сверху вниз, пока не найдёт тот, чей type он поддерживает.
В type можно указать весь формат файла: контейнер ( video/mp4 для MP4), видео-кодек ( av01.0.05M.08 для AV1, hevc для HEVC и avc1.4D401E для H.264) и аудио-кодек ( opus для Opus и mp4a.40.2 для AAC).
Бонус: как сконвертировать GIF в AV1 и H.264
В 2019 использовать GIF для коротких видео — большой грех. GIF весит в 20—40 раз больше, чем H.264 или AV1. GIF сильнее бьёт по CPU, заставляет аккумулятор утекать быстрее. Если вам нужно короткое зацикленное видео, берите видео-кодеки. И FFmpeg может конвертировать видео прямо из GIF.
Конвертируем GIF в H.264:
Генерируем ещё более маленький AV1:
Теперь вставим animation.h264.mp4 и animation.av1.mp4 в HTML.
Опции autoplay и loop делают из видео «гифку» — цикленное видео, которое сразу играет после загрузки страницы. playsinline блокирует Safari от открытия видео на весь экран при клике на видео.
Время выводов
AV1 ещё экспериментальный. Но его уже можно использовать, чтобы сделать четверть ваших пользователей счастливее. Пара команд FFmpeg сгенерируют видео-файлы. с самого начала создан, чтобы отдавать видео по возможностям браузеров. Мы уже используем AV1 в продакшене и всё работает отлично (исключая время ожидания, пока AV1-кодер закончит работу).
Типичный запрос в техподдержку Voximplant: «Почему видеозвонок между двумя Chrome выглядит лучше, чем видеозвонок между MS Edge и нативным iOS-приложением»? Коллеги обычно отвечают нейтральное — «потому что кодеки». Но мы, айтишники, любопытны. Даже если я не разрабатываю новый Skype-for-web, чтение «какой браузер что может» и как они разбивают одно видео на несколько потоков разного качества обогащает картину мира и дает свежую тему для обсуждения в курилке. Удачно подвернувшаяся статья от широко известного в узких кругах Dr Alex (с лучшим объяснением термина «media engine» из всех, что я видел), немного нашего опыта, пара вечеров в «Циферблате» — и адаптированный для Хабра перевод ждет под катом!
Кодеки и ширина канала
Когда говорят о видеокодеках, чаще всего обсуждают баланс качества и ширины используемого канала. И любят игнорировать вопросы нагрузки на процессоры и того, как технически передавать видео. Довольно разумно, если мы обсуждаем кодирование уже записанного видео.
Ведь если у вас есть готовое видео, то нет особой разницы, будет оно сжиматься пару минут, пару часов или даже пару дней. Любые затраты процессора и памяти будут оправданы, ведь это одноразовое вложение, а видео потом можно раздать миллионам пользователей. Лучшие видеокодеки сжимают видео в несколько проходов:
- Проход №1: Видео разбивается на части с общими признаками: действие происходит на одном и том же фоне, быстрая или медленная сцена и тому подобное.
- Проход №2: Сбор статистики для кодирования и информации о том, как кадры меняются во времени (чтобы такую информацию получить, нужно несколько кадров).
- Проход №3: Каждая часть кодируется со своими настройками кодека и с использованием информации, полученной на втором шаге.
При использовании физических носителей, DVD или Blu-Ray дисков, размер видео фиксирован и перед кодеком стоит задача обеспечить максимальное качество для заданного размера. Если видео раздается по сети, то задача кодека подготовить такой(-ие) файл(-ы), чтобы получилось максимальное качество при фиксированной ширине канала или же минимальная ширина канала при фиксированном качестве, если нужно уменьшить цену. Задержки сети при этом можно игнорировать и буферизировать на стороне клиента столько секунд видео, сколько нужно. А вот для стриминга ни размер, ни качество фиксировать нет особой необходимости, у кодека другая задача: любой ценой уменьшить задержки.
Наконец, создатели кодеков долгое время держали в уме только один сценарий использования: на компьютере пользователя проигрывается одно и только одно видео. Которое, к тому же, почти всегда можно декодировать силами видеочипа. Потом случились мобильные платформы. А затем WebRTC, для обеспечения минимальных задержек которой разработчики очень хотели использовать Selective Forwarding Unit серверы.
Использование кодеков при видеозвонках настолько отличается от традиционного использования при проигрывании видео, что сравнивать кодеки «в лоб» становится бессмысленно. Когда на заре WebRTC сравнивали VP8 и H.264, одна из самых жарких дискуссий шла относительно настроек кодеков: делать их «реалистичными» с учетом ненадежных сетей или же «идеальными» для максимального качества видео. Борцы за «чистоту сравнения кодеков» на полном серьезе утверждали, что кодеки надо сравнивать без учета потерь пакетов, джиттера и других сетевых проблем.
Что сейчас с кодеками?
- H.264 и VP8 примерно одинаковые по соотношению качества видео и используемой ширины канала;
- H.265 и VP9 также примерно соответствуют друг другу, показывая в среднем на 30% лучшие результаты по сравнению с кодеками предыдущего поколения за счет увеличившейся на 20% загрузки процессора;
- новый кодек AV1, гремучая смесь VP10, daala и thor, лучше кодеков предыдущего поколения примерно настолько же, насколько те лучше своих предшественников.
Кодеки и media engine: все сложно
У видеозвонков и видеоконференций почти те же задачи, что у обычных медиа. Только вот приоритеты совсем другие:
- Нужно 30 кадров в секунду (скорость кодека).
- Нужно 30 кадров в секунду с интерактивностью (минимальные задержки).
- Нужно хорошо переживать небольшие изменения ширины канала, когда в коворкинг приходит еще один посетитель.
- Нужно хоть как-то переживать сильные изменения ширины канала, когда этот посетитель начинает качать торренты.
- Нужно хорошо переживать джиттер (случайные задержки между получаемыми пакетами, благодаря которым они могут не просто задержаться, а прийти не в том порядке, в каком отсылались).
- Нужно переживать потерю пакетов.
3.1. Основные задачи media engine
С технической стороны, цель «нужно 30 кадров в секунду» выполнима с задержками. И чем больше задержка, тем проще достигнуть цели: если на отправляющей стороне кодировать не по одному кадру, а сразу по несколько, то можно существенно сэкономить на ширине канала (кодеки лучше сжимают по несколько кадров за счет анализа изменений между всеми ними, а не только между текущим и предыдущими). При этом задержка между получением видеопотока с камеры и отправки по сети увеличивается пропорционально количеству буферизированных кадров плюс сжатие становится медленнее за счет дополнительных расчетов. Многие сайты используют этот трюк, декларируя время отклика между отправкой и получением сетевых пакетов между участниками видеозвонков. Задержку при кодировании и декодировании они умалчивают.
Чтобы видеозвонки были похожи на личное общение, создатели коммуникационных сервисов отказываются от всех настроек и профилей кодеков, которые могут создавать задержки. Получается такая деградация современных кодеков до покадрового сжатия. Поначалу такая ситуация вызывала неприятие и критику со стороны разработчиков кодеков. Но времена изменились, и сейчас у современных кодеков в дополнение к традиционным пресетам «минимальный размер» и «максимальное качество» добавился комплект настроек «реалтайм». А заодно и «шаринг экрана», тоже для видеозвонков (там своя специфика — большое разрешение, мало меняющаяся картинка, необходимость сжатия без потерь, иначе текст поплывет).
3.2. Media engine и публичные сети
Раньше кодеки не могли менять битрейт: при старте сжатия они принимали целевой битрейт в качестве настройки и далее выдавали фиксированное количество мегабайт видео в минуту. В те давние времена видеозвонки и видеоконференции были уделом локальных сетей и резервированной пропускной способности. А в случае проблем звали админа, который чинил резервирование ширины канала на циске.
Первым эволюционным изменением была технология «адаптивного битрейта». У кодека есть много настроек, которые влияют на битрейт: разрешение видео, незначительное уменьшение fps с 30 до 25 кадров в секунду, квантование видеосигнала. Последнее в этом списке — «огрубление» перехода между цветами, незначительные изменения которого мало заметны человеческому глазу. Чаще всего главной «настройкой» для адаптивного битрейта было именно квантование. А про ширину канала кодеку рассказывал media engine.
Механизм адаптивного битрейта помогает media engine продолжать транслировать видео при незначительных изменениях ширины канала. Но если ваш коллега начал качать торренты и доступный канал просел в два или в три раза, то адаптивный битрейт не поможет. Поможет уменьшение разрешения и фреймрейта. Последнее предпочтительнее, так как наши глаза менее чувствительны к количеству кадров в секунду, чем к разрешению видео. Обычно кодек начинает пропускать один или два кадра, снижая фреймрейт с 30 до 15 или даже до 10.
Важная деталь: media engine будет пропускать кадры на отправляющей стороне. Если у нас видеоконференция на несколько участников или вещание, а сетевая проблема не у отправителя, то одно «слабое звено» ухудшит качество видео для всех участников. В такой ситуации помогает связка simulcast (отправляющая сторона отдает сразу несколько видеопотоков разного качества) и SFU (Selective Forwarding Unit, сервер отдает каждому участнику видеоконференции или вещания поток нужного качества). У некоторых кодеков есть возможность создавать несколько simulcast потоков, SVC, которые дополняют друг друга: клиентам с самым слабым каналом отдается поток минимального качества, клиентам с более хорошим каналом отдается этот же поток плюс первый потом «апгрейда», клиентам с еще более хорошим каналом отдаются уже два потока «апгрейда» и так далее. Такой способ позволяет не передавать одни и те же данные в несколько потоков и экономит примерно 20% трафика по сравнению с кодированием нескольких полноценных видеопотоков. Еще он упрощает работу сервера — не нужно переключать потоки, достаточно не передавать клиентам пакеты с «апгрейдом». Тем не менее, любой кодек можно использовать для simulcast, это фича media engine и организации RTP-пакетов, а не кодека.
С потерями труднее всего бороться. Джиттер чуть попроще — достаточно сделать на принимающей стороне буфер, в котором собирать опоздавшие и перепутанные пакеты. Не слишком большой буфер, иначе можно поломать реалтайм и стать буферизирующим видео ютубом.
С потерями пакетов обычно борются их повторной пересылкой (RTX). Если у отправителя хорошая связь с SFU, то сервер может запросить потерянный пакет, получить его повторно и все равно уложиться в 33 миллисекунды. Если же сетевое соединение ненадежно (более 0.01% потерь пакетов), то нужны сложные алгоритмы работы с потерями, например FEC.
Что сейчас поддерживают браузеры
Firefox и Safari используют Media Engine от Google и время от времени обновляют libwebrtc. Делают они это сильно реже Хрома, новая версия которого выходит каждые 6 недель. Время от времени они начинают сильно отставать, но затем снова синхронизируются. За исключением поддержки кодека VP8 в Сафари. Даже не спрашивайте.
До ката таблица с полным сравнением кто что поддерживает, но в целом все довольно просто. Edge все обычно игнорируют. Выбор идет между поддержкой мобильной версии Safari и хорошим качеством видео. iOS Safari поддерживает только видеокодек H.264, в то время как libwebrtc позволяет использовать simulcast только с кодеками VP8 (разные потоки с разной частотой кадров) и VP9 (поддержка SVC). Но можно считерить и воспользоваться libwebrtc на iOS, создав нативное приложение. Тогда с simulcast все будет хорошо и пользователи получат максимально возможное качество видео при нестабильном интернет-подключении. Несколько примеров:
- Highfive — десктопное приложение на Electron (Chromium) с H.264 simulcast (libwebrtc) и звуковыми кодеками от Dolby;
- Attlasian — Интересное решение клиентом на React Native и libwebrtc для simulcast;
- Symphony — Electron для десктопа, React Native для мобильных устройства, и там и там поддерживается simulcast + дополнительные средства безопасности, совместимые с тем, чего хотят банки;
- Tokbox — VP8 с simulcast в мобильном SDK, используют патченную версию libvpx в libwebrtc.
Будущее
Уже сейчас понятно, что VP8 и VP9 в Safari не будет (в отличии от Edge, который VP8 поддерживает).
Интернет-серфинг не может существовать без переходов на сайты, просмотра видеофайлов и прослушивания музыки. К сожалению, многие пользователи сталкиваются с проблемами воспроизведения. Однако не нужно унывать. Об ошибке, когда отсутствует кодек H264 для браузера Opera.
Подробности
В действительности данный сбой больше не наблюдается у пользователей. Дело в том, что кодек больше не распространяется как отдельный установочный пакет для Windows. Все необходимые компоненты для воспроизведения медиафайлов на веб-ресурсах давнее время встроены либо в операционную систему, либо непосредственно в интернет-обозреватель.
Так что на последних версиях Opera такой ошибки попросту быть не может. А если она у вас все же наблюдается, то не нужно искать никакие программы на просторах интернета. Тем более, что ничего путного скачать не получится, а в худшем случае – получите вирус. Единственное решение данной неполадки заключается в обновлении программы.
Инструкция
Вся процедура загрузки новой версии браузера умещается в несколько простых действий:
Дополнение
Если у вас все же возникают какие-либо проблемы с воспроизведением медиафайла, то обратитесь к данным рекомендациям:
- Обновление драйверов на видеокарту нередко помогает, а также повышает производительность компьютера.
- Не загружайте сильно интернет, если планируете посмотреть ролик.
- Если у вас слабый компьютер, то выберите более низкое качество видео.
- Попробуйте закрыть лишние программы и вкладки браузера.
- Проверьте компьютер на наличие угроз с помощью любого антивируса.
Многие пользователи сталкиваются с проблемой отсутствия воспроизведения видео и аудио из социальных сетей. Это во многом зависит от того, что отсутствует кодек для браузера Опера H264.
Обновление Flash Player при этом не помогает. Решением является только установка в браузере этого видеокодека.
Это легко обнаружить при проверке воспроизведения видеофайлов например с Ютуба. Об этом символизирует невозможность воспроизведения через YouTube HTML5, по причине отсутствия поддержки Оперой кодека H.264.
Способы решения
Одним из методов решения этой непростой проблемы является установка пакета для движка chromium под названием Codecs-ffmpeg-extra, а также копирование libffmpeg.so.
Однако для более поздних версий Opera данный пакет уже морально устарел. Вследствие этого нужно скачивать гораздо более позднюю версию пакета видеокодеков, которую можно найти в сети по запросу в поисковиках.
Важно! Устанавливайте всегда проверенные антивирусом программы и программное обеспечение, во избежание проникновения вредоносных файлов на персональный компьютер.
Также, отказ от кодека H264 мотивирован продвижением на браузерах с движком Chromium формата WebM. Поэтому соответственно, на Google, Opera и Firefox, данный тип кодека попросту не поддерживается.
Установка ПО для поддержки кодеков
Вторым способом будет установка соответствующих программ для сжатия и кодирования видео в формат H.264.
Установка программы x264 Video Codec r2851
Приложение обладает рядом особенностей и преимуществ:
Соответственно установка в браузер Опера данного приложения происходит путем скачивания установочного файла, принятия лицензионного соглашения и открытия инсталляции.
При запуске происходит сжатие необходимых видеофайлов и просмотр видео в браузере.
Войти
media.gmp-eme-adobe.enabled (boolean, true)
media.gmp-eme-adobe.forceSupported (boolean, true; FF 49.0+ )
media.gmp-eme-adobe.forcevisible (boolean, true; FF 45-48, no longer used in 49.0+)
media.gmp-eme-adobe.visible (boolean, true; FF 49.0+ )
media.gmp-eme-adobe.version (string, 17; required for manual install now that automatic install is no longer an option)
media.gmp-eme-adobe.abi (string, x86-msvc-x86; not required, you can set it if you want to more closely mimic automatic install)
media.gmp-eme-adobe.lastUpdate (integer, 1500000000; not required, you can set it if you want to more closely mimic automatic install)
media.gmp.decoder.enabled (boolean, true)
media.eme.enabled (boolean, true)
Затем в профиле FF создаём папку gmp-eme-adobe, внутри неё ещё одну с названием «17», куда и распаковываем три файла из архива.
Перезапускаем Firefox и в разделе плагинов обнаруживаем появившуюся строчку с Primetime. Убедившись, что плагин стоит в состоянии «Всегда включено», отправляемся за холодным пивом и можем смотреть любимые видосики.
Читайте также: