- Как воспроизводить файлы H.264 и H.265 на плеере VLC и конвертировать в MP4?
- Как воспроизводить файлы H.264 и H.265 на плеере VLC и конвертировать в MP4?
- Как конвертировать файлы H.264 в MP4
- Как исправить ошибку неподдерживаемого аудио-видео файла на Android
- Что такое кодек?
- Что такое контейнер?
- Почему мое видео не воспроизводится?
- Как я могу воспроизводить «неподдерживаемые медиа-файлы» на моем смартфоне?
- VLC для Android
- MX Player
- 4 неплохих варианта видеоплеера для Андроид-устройств
- Act 1
- ArcMedia
- iMPlayer
- RockPlayer
- WebRTC на Android: как включить аппаратное кодирование на множестве устройств
- Почему именно H.264?
- Поддержка H.264 на Android
- Поддержка H.264 в WebRTC
- Параметры конфигурации кодека
- Разрешение потока
- Режим битрейта
- Цветовой формат
- Регулировка битрейта
- Результат
Как воспроизводить файлы H.264 и H.265 на плеере VLC и конвертировать в MP4?
Как воспроизводить файлы H.264 и H.265 на плеере VLC и конвертировать в MP4?
Видеокодеки H.264 и H.265 сегодня являются наиболее распространенным для сжатия видео в системах видеонаблюдения. Но как воспроизводить сжатые этими кодеками файлы на компьютере под управлением Windows или Mac OS?
Проще и лучше всего для этого использовать видео проигрыватель VLC. Для этого нужно выполнить несколько действий:
Шаг 1. Загрузите последнюю версию VLC здесь и установите ее на свой компьютер.
Шаг 2. Запустите медиаплеер VLC. Перейдите в Инструменты, а затем нажмите Настройки.
Шаг 3. Отметьте параметр «Все», чтобы отобразить все настройки.
Шаг 4. Выберите «H264 video demuxer» или HEVC/H.265 video demuxerв модуле Demux. Затем нажмите Сохранить.
После этого сжатое одним из этих кодеков видео можно просматривать на ПК или ноутбуке пол любой операционной системой в медиаплеере VLC.
Кому проще увидеть один раз, чем 10 раз прочесть, предлагаем посмотреть видеоролик.
Если у вас возникают проблемы и вы не можете воспроизводить видео H.264 или H.265 на проигрывателе VLC, попробуйте следующие советы по устранению неполадок, которые могут помочь решить проблемы:
- Обновите медиаплеер VLC до последней версии и обязательно обновите кодеки VLC.
- Включите демультиплексор H.264 или H.265 в настройках VLC. Перейдите в Инструменты> Настройки> Показать настройки, нажмите Все> Вход / Кодеки \ Демультиплексоры: модуль Demux
Как конвертировать файлы H.264 в MP4
Другой способ воспроизвести видео H.264 на VLC заключается в том, чтобы сначала преобразовать файлы H.264 или H.265 в формат MP4, а затем воспроизвести видео на медиаплеере VLC. Однако в настоящее время большинство производителей видеонаблюдения предоставляют встроенные конвертеры, поэтому при экспорте видео они уже находятся в формате MP4.
Для преобразования файлов H.264 / H.265 в MP4 нужно:
Шаг 1. Используйте бесплатный видео конвертер, такой как VSDC Free Video Converter или Subler . Загрузите его и установите на свой компьютер.
Шаг 2. Нажмите « Добавить файлы » и добавьте файлы H.264 или H.265 , которые необходимо преобразовать.
Шаг 3. Выберите « MP4 » в качестве формата видео, в который вы хотите преобразовать.
Шаг 4. Нажмите « Преобразовать» , дождитесь завершения и нажмите « Сохранить» .
После того, как вы закончите преобразование файлов H.264 в формат MP4, вы сможете воспроизводить и просматривать видео в проигрывателе VLC.
Ну а мы напоминаем, что наша компания «Запишем всё» с 2010 года занимается монтажом, модернизацией и обслуживанием любых систем видеонаблюдения, а также видеодомофонов в Москве и Подмосковье.
Мы работаем быстро, качественно и по доступным ценам. Перечень услуг и цены на их вы можете посмотреть здесь.
Звоните +7 (499) 390-28-45 с 8-00 до 22-00 в любой день недели, в том числе и в выходные. Мы будем рады Вам помочь!
Источник
Как исправить ошибку неподдерживаемого аудио-видео файла на Android
Довольно обидно увидеть ошибку «не удается открыть файл» или «неподдерживаемый аудиокодек», особенно, когда вы скинули фильм дома, а пытаетесь посмотреть его в поезде. Так как же исправить ошибку неподдерживаемого видеофайла? Читайте дальше, и мы покажем решение.
Что такое кодек?
Кодек на самом деле является аббревиатурой кодер-декодер. Название на самом деле говорит само за себя: это метод для кодирования и декодирования данных, в частности сжатых данных. Кодеки принимают данные (в данном случае видеоданные) и либо сжимают, чтобы его можно было сохранить, либо распаковывают, чтобы его можно было просмотреть.
Однако кодеки отличаются от контейнеров и форматов файлов. Например, AVI часто ошибочно принимают за кодек, когда речь идет просто о типе видеофайла.
Что такое контейнер?
Обычно контейнер также называется форматом файла. Он заботится о хранении, транспортировке и представлении (пока кодек готовит файл для этих действий). Контейнеры позаботятся о синхронизации аудио и видео. Контейнер является частью файла, который определяет тип файла. Проще говоря — если у вас есть файл mrandroid.mp4, MP4 является контейнером.
Почему мое видео не воспроизводится?
В большинстве случаев причина появления сообщения об ошибке при попытке воспроизведения видеофайла на устройстве Android заключается в том, что кодек мультимедийного файла не поддерживается медиаплеером. Другая возможная причина заключается в том, что аудиокодек не поддерживается. Вы можете подумать, что ваш медиаплеер произвольно решает воспроизводить и не воспроизводить файлы одного и того же типа, но контейнер может содержать несколько кодеков, которые ваш телефон может не поддерживать.
Как я могу воспроизводить «неподдерживаемые медиа-файлы» на моем смартфоне?
Как упоминалось выше, одна из наиболее вероятных причин, по которым вы получаете «не удается открыть файл», «неподдерживаемый аудиокодек» или «ошибка неподдерживаемого видеофайла», заключается в том, что текущий медиаплеер не поддерживает кодек вашего видео. Самым простым решением является переключение с видео-плеера по умолчанию и загрузка нового. Вот два наиболее универсальных проигрывателя Android, которые мы рекомендуем:
VLC для Android
Если вы когда-либо использовали VLC на своем ПК, вы знаете, что это один из самых удобных и надежных медиаплееров. То же самое относится и к приложению VLC для Android. Он включает в себя все кодеки без необходимости дополнительных загрузок. Он обеспечивает поддержку сжатого видео DivX и XviD, а также различных форматов — MKV, MP4, AVI, MOV, Ogg, FLAC, TS, M2TS, Wv и AAC. Для тех, кто любит смотреть иностранные фильмы или аниме, вы будете рады узнать, что VLC также поддерживает многодорожечный звук и субтитры. Мало того, приложение легкое, бесплатное и не имеет противной рекламы. Это один из лучших, если не самый лучший, медиаплеер для Android.
MX Player
Это еще один легкий и простой в использовании мультимедийный проигрыватель Android. Так же, как VLC, MX Player поддерживает несколько файлов (.avi, mpeg, mp4, wmv, divx, xvid и другие), а также различные форматы субтитров, включая .txt, .sub, .srt, .idx и другие. Он также предлагает элементы управления жестами, такие как пролистывание вниз для уменьшения яркости, прокрутка назад и вперед, перемещение текста субтитров и многое другое. Интерфейс приложения довольно простой, и для некоторых это огромный плюс. В бесплатной версии MX Player есть реклама, но если вы можете с этим смириться, это отличный плеер, который поддерживает большинство форматов видеофайлов, о которых вы только можете подумать. Если нет, есть также версия без рекламы, доступная за 5,99 $.
Какой ваш любимый видеоплеер? Дайте нам знать об этом в комментариях.
Источник
4 неплохих варианта видеоплеера для Андроид-устройств
Существует большое количество видеоплееров под Андроид ОС, как специализированных, так и воспроизводящих одновременно аудио и видеофайлы. Среди последних также можно выделить как специализированные на 2-3 расширениях, так и т.н. «всеядные», воспроизводящие огромное количество форматов.
В статье рассмотрим несколько популярных видеопроигрывателей: Act 1 Video Player, arcMedia, iMPlayer (iFlux Movie Player) и RockPlayerBase.
Act 1
Плеер Act 1 предназначен для воспроизведения форматов h264 и 3gpp. Простой и удобный интерфейс, хорошая производительность, пользователи не отмечали каких-либо серьезных проблем. Приятная «фишка» проигрывателя – возможность «запомнить» место видеозаписи, на котором закончился просмотр, и продолжить позднее воспроизведение.
ArcMedia
Это всеядный плеер, поддерживающий следующие контейнеры: asf, mkv, avi, mov, ogg, mp3, mp4, rmvb, wmv, wav, wma, и кодеки: aac, divx, ac3, flv4, PCM, MPEG-1, MPEG-2, Vorbis, RealVideo, xvid. Нетребователен к версии Андроид: работает с любой системой от 1.6 и старше.
iMPlayer
Поддерживает s/w и h/w, а также форматы divx/xvid, wmv, mpeg, asf, flv, h264 и другие. Кроме того, полезной функцией является поддержка субтитров в форматах smi и srt. Также способен воспроизводить аудио-файлы mp3, wma, ac3.
RockPlayer
Еще один всеядный проигрыватель для Андроид. Поддерживает огромное количество форматов, в том числе DivX, MKV, AVI, XviD. За время своего существования получил множество положительных отзывов от пользователей за высокую производительность, удобство в работе и широкую функциональность. Многие считают его одним из лучших плееров для данной ОС.
Источник
WebRTC на Android: как включить аппаратное кодирование на множестве устройств
Для видеозвонков в Badoo мы используем стандарт WebRTC и кодек H.264. Если верить документации, этот кодек должен без проблем работать на любых устройствах Android начиная с Android 5.0. Но на практике всё оказалось не совсем так. В этой статье я расскажу про особенности реализации аппаратного кодирования для кодека H.264 в WebRTC и о том, как заставить его работать на большем количестве устройств.
Почему именно H.264?
При соединении по WebRTC все устройства, участвующие в сеансе, передают различные параметры связи, в том числе видео- и аудиокодеки. Если устройства поддерживают несколько кодеков (например, VP8 и H.264), приоритетные для платформы кодеки указываются первыми. Эти данные используются на этапе согласования в WebRTC, после которого остаются только кодеки, поддерживаемые всеми устройствами. Пример таких данных с расшифровкой можно увидеть в этом документе.
В случае с видеозвонками при отсутствии на одном из устройств поддержки кодека H.264 оба устройства могут перейти, например, на кодек VP8, который не зависит от аппаратной реализации на устройстве. Но наше приложение доступно на самых разных гаджетах, в том числе на смартфонах предыдущих поколений. Поэтому для видеосвязи мы хотели по возможности использовать аппаратное кодирование: оно снижает нагрузку на процессор и не так сильно ест батарею, что критично для устаревших гаджетов. Поддержка аппаратного кодирования H.264 реализована на большом количестве устройств, в отличие от того же VP8.
Поддержка H.264 на Android
Если верить описанию поддержки форматов мультимедиа, декодирование H.264 Baseline Profile должно работать на всех Android-устройствах, а кодирование — начиная с Android 3.0. В Badoo мы поддерживаем устройства начиная с Android 5.0, так что у нас не должно было возникнуть проблем. Но всё оказалось не так просто: даже в гаджетах с пятой версией мы обнаружили большое количество особенностей.
С чем это может быть связано?
Как известно, при разработке нового устройства на Android любому производителю необходимо пройти набор тестов Compatibility Test Suite. Он запускается на подключённом к устройству ПК, а его результаты необходимо отправить в Google для подтверждения того, что устройство соответствует требованиям ОС Android указанной версии. Только после этого гаджет можно выпустить на рынок.
Нас в этом наборе тестов интересуют мультимедиа-тесты, а конкретнее — тесты на кодирование и декодирование видео. Я решил остановиться на тестах EncodeDecodeTest, MediaCodecTest, DecoderTest и EncoderTest, так как они присутствуют на всех версиях Android начиная с 4.3. График количества строк кода в этих тестах выглядит так:
До версии 4.3 большинства из этих тестов просто не существовало, и значительный их прирост пришёлся на версии 5 и 7. Поэтому можно говорить о том, что до версии Android 4.3 Google никак не проверяла соответствие устройств своей спецификации по кодированию и декодированию видео, а в версии 5.0 значительно улучшила эту проверку.
Казалось бы, это указывает на то, что начиная с версии 5.0 с кодированием всё должно быть в порядке. Но, учитывая предыдущий мой опыт работы с декодированием потокового видео на Android, я был уверен, что это не так. Достаточно было посмотреть на количество топиков про кодирование в Google-группе discuss-webrtc.
Искать подводные камни нам помогали исходные файлы WebRTC, которые находятся в свободном доступе. Рассмотрим их подробнее.
Поддержка H.264 в WebRTC
Тут есть метод с говорящим названием isHardwareSupportedInCurrentSdkH264:
Как мы видим, поддержка аппаратного кодирования на Android реализована только для чипсетов Qualcomm и Exynos. Почему же в стандартной реализации WebRTC нет поддержки других чипсетов? Вероятнее всего, это связано с особенностями реализации аппаратных кодеков производителей. И выявить эти особенности часто можно только на продакшене, поскольку найти те или иные устройства не всегда представляется возможным.
Все описания кодеков на устройстве хранятся в файле media_codecs.xml. Вот, например, этот файл для Pixel XL и для HUAWEI P8 lite. При получении списка кодеков с помощью метода getCodecInfos() объекта MediaCodecList этот файл парсится — и возвращаются кодеки, хранящиеся в нём. Эта операция и правильность заполнения этого файла производителем покрываются в CTS тестом MediaCodecListTest, который также увеличился со 160 строк кода в Android 4.3 до 740 строк в Android 10.
В Badoo мы поменяли код метода isHardwareSupportedInCurrentSdkH264, отказавшись от «белого» списка кодеков и заменив его «чёрным» списком префиксов программных кодеков, которые перечислены в WebRTC:
Но нельзя просто так взять и реализовать поддержку всех кодеков, не обращая внимания на особенности производителей. Из названий топиков, посвящённых аппаратному кодированию на Android в группе discuss-webrtc, можно понять, что в этом случае у нас точно возникнут ошибки. В основном они появляются на этапе конфигурации кодека.
Параметры конфигурации кодека
Инициализация кодека для кодирования выглядит так:
В некоторых из этих параметров легко допустить ошибку, что вызовет исключение при конфигурации кодека и нарушит работу приложения. Также при работе с кодеком может понадобиться регулировать его битрейт в зависимости от различных факторов, так как сам кодек делает это неправильно. За это в WebRTC отвечает класс BaseBitrateAdjuster, у которого есть два наследника:
- DynamicBitrateAdjuster — регулирует битрейт в зависимости от объёма данных,
- FramerateBitrateAdjuster — регулирует битрейт в зависимости от частоты кадров.
Соответственно, для каждого кодека необходимо выбрать свой механизм регулировки битрейта. Рассмотрим подробнее особенности установки параметров инициализации для аппаратных кодеков.
Разрешение потока
После получения для кодека объекта MediaCodecInfo можно изучить кодек подробнее, получив его возможности в классе CodecCapabilities. Из них можно узнать, поддерживает ли кодек выбранные разрешение и частоту кадров. Если он поддерживает эти параметры, их можно устанавливать безопасно.
Однако иногда это правило не работает. Мы столкнулись с тем, что кодеки с префиксом “OMX.MARVELL.” кодировали неправильно, показывая зелёные полосы по краям экрана, если разрешение потока отличалось от 4:3. При этом сам кодек утверждал, что выбранные разрешение и частота кадров поддерживаются.
Режим битрейта
Стандартный режим для всех видеокодеков — постоянный битрейт. Однако однажды нам пришлось использовать переменный битрейт:
Произошло это на устройстве Lenovo A1000 с чипсетом компании Spreadtrum (теперь Unisoc), начинающимся с префикса “OMX.sprd.”. Поиск в Интернете привёл нас к посту шестилетней давности о Firefox OS, описывающему эту проблему и способ её решения.
Цветовой формат
При использовании кодека в режиме байт-буферов необходимо выбрать правильный формат. Обычно это делается с помощью функции следующего вида:
Грубо говоря, всегда выбирается первый из поддерживаемых цветовых форматов.
Однако в случае с кодеками HUAWEI, начинающимися с префиксов «OMX.IMG.TOPAZ.», «OMX.hisi.» и «OMX.k3.», это не работало, и после долгих поисков мы нашли решение: вне зависимости от того, какой формат возвращают эти кодеки, необходимо использовать формат COLOR_FormatYUV420SemiPlanar. Разобраться в этом нам помог тред на одном китайском форуме.
Регулировка битрейта
Стандартный код WebRTC содержит следующее:
Как видно из этого кода, для всех чипсетов, кроме Exynos, регулировка битрейта выключена. Но это относится только к Qualcomm, так как в стандартном коде поддерживаются только Exynos и Qualcomm. Поэкспериментировав с различными значениями этой настройки, а также поискав в Интернете, мы выяснили, что для кодеков с префиксами «OMX.MTK.» её тоже нужно включить. Также необходимо сделать это для кодеков HUAWEI, начинающихся с префикса «OMX.IMG.TOPAZ.», «OMX.hisi.» или «OMX.k3.». Это связано с тем, что эти кодеки не используют временные метки кадров для регулировки битрейта, считая, что все кадры приходят с одинаковой частотой, установленной при конфигурации кодека.
В завершение приведу список кодеков, которые мы получили для устройств на Android 5.0 и 5.1. Они были нам интересны в первую очередь потому, что на более новых версиях Android ситуация улучшается и нестандартных кодеков становится всё меньше.
Это видно на графике ниже. Шкала логарифмическая, чтобы лучше показать редкие случаи.
Как мы видим, у большинства устройств были чипсеты Spreadtrum, MediaTek, HUAWEI и MARVELL — поэтому наши изменения помогли включить аппаратное кодирование на этих гаджетах.
Результат
Хотя мы и предполагали, что на некоторых устройствах при работе с H.264 будут возникать проблемы, Android опять смог нас удивить. Как мы видим из статистики пользователей Badoo, на руках у пользователей ещё достаточно много устройств 2014–2016 года выпуска, которые они не хотят или не могут обновлять. И хотя ситуация с выходом обновлений Android для новых устройств уже гораздо лучше, чем несколько лет назад, доля гаджетов предыдущего поколения сокращается довольно медленно и поддерживать их придётся ещё достаточно долго.
Сейчас WebRTC активно развивается Google из-за его использования в проекте Stadia (вот видео с подробностями на эту тему), поэтому он будет становиться всё лучше и лучше и, скорее всего, станет стандартом для реализации видеосвязи. Надеюсь, что эта статья поможет вам понять особенности работы с H.264 в WebRTC и использовать это в своих проектах.
Источник