Не найден кодировщик при перечислении имен компонентов и моделей с использованием IOMX, но android может записывать файлы.mp4 с кадрами в кодировке H264
Я пытался перечислить все поддерживаемые кодеки в устройстве Android с помощью IOMX, как показано здесь, связывая с сервисом медиаплеера. Я получил свой код работает и получаю список компонентов. Но я заметил, что не было компонента кодировщика. Только все компоненты декодера были перечислены. Затем я захожу во встроенное приложение камеры, предоставляемое Android, и начинаю записывать видео, которое было сохранено в формате mp4. Когда я проверял информацию о кодеке файла mp4 из плеера VLC, он показывал "H264 mpeg4 part10 avc". Так что тут возникает мое сомнение. Если для кодирования h264/avc нет компонента, то как Android может кодировать кадры в формате h264?
Любое предложение? Благодарю.
1 ответ
В дистрибутиве Android есть набор кодеков, поставляемых Google, которые обычно называют "простыми ванильными кодеками". В случае H.264 в комплекте есть кодер, источники которого находятся на frameworks/av/media/libstagefright/codecs/avc/enc/
, Следовательно, при кодировании с камеры этот кодек по умолчанию используется для кодирования кадров. Чтобы проверить то же самое, вы можете включить журналы в OMXCodec
или же ACodec
и обратите внимание, что имя компонента кодировщика OMX.google.h264.encoder
,
Полный список кодеков доступен в SoftOMXPlugin.cpp
в frameworks/av/media/libstagefright/omx/