Могу ли я кодировать или декодировать видео в Android, используя OpenCORE или StageFright?

Предоставляет ли эта платформа Android возможности для разработки функций кодирования и декодирования для одного приложения Android?

Я знаю, что есть один API высокого уровня с 4.1 MediaCodec, который предоставляет возможности для кодирования и декодирования видео, но я не знаю, действительно ли он использует один из этих Media Frameworks в качестве Stagefright для доступа к кодекам.

Какие преимущества выгоднее кодировать или декодировать, используя непосредственно одну из этих платформ, чем API MediaCodec?

Может быть, я очень запутался, но мне нужно сделать проект о кодировании с видео Android, и я должен выбрать лучший вариант для этого, если кто-нибудь может мне помочь...

2 ответа

Решение

Вы должны использовать API MediaCodec, а не API нижнего уровня. Затем MediaCodec API будет использовать соответствующую инфраструктуру для внутреннего использования. Это связано с тем, что производители Android будут интегрировать свои собственные кодеки и аппаратные / dsp-ускоренные кодеки в платформу и устанавливать их по умолчанию для API MediaCodec. Они будут гарантировать, что их кодеки работают с API MediaCodec. Если вы используете MediaCodec API, он будет работать на всех устройствах, независимо от используемой ниже платформы. Вот для чего этот API.

Если вы не хотите проводить тестирование с OpenCore/Stagefright, не ходите туда.

То, что вы пытаетесь сделать, сделано вендором / интегратором. Лучшим решением было бы (если у вас есть доступ к настроенному исходному коду платформы -> если нет, используйте любую бесплатную плату), чтобы интегрировать ваш HW-код с libstagefright (как компонент OMX), таким образом, вы будете выполнять кодирование YUV вместе с с инкапсуляцией в любой желаемый (из поддерживаемых) формат, тогда вы можете использовать некоторые высокоуровневые API-интерфейсы rtp для инкапсуляции и управления потоковой передачей (просто сделайте вывод из ответа дяди Google об android и rtp).

Другие вопросы по тегам