Android AudioVideo Framework не может правильно читать метаданныеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android AudioVideo Framework не может правильно читать метаданные

Сообщение Anonymous »

Я пытался открыть медиафайл *.mp4 на определенных устройствах Android. Как только я открываю его, данные MediaFormat имеют неопределенный язык на звуковых дорожках. Если я затем загружу одно и то же приложение на другое устройство, оно декодирует его правильно.
На данный момент я попробовал API MediaPlayer, MediaMetadataRetriever и MediaExtractor. . Та же проблема воспроизводится с собственным кодом C++ с использованием API AMediaExtractor.
Пример:

Код: Выделить всё

        val me = MediaExtractor()
val fis = resources.openRawResourceFd(R.raw.mp4)
me.setDataSource(fis.fileDescriptor, fis.startOffset, fis.length)
val format = me.getTrackFormat(1)
val language = format.getString(MediaFormat.KEY_LANGUAGE)
На Android 9 Razer Phone 2 это вернет неопределенное значение, в то время как на любом другом устройстве оно работает правильно и возвращает фактическую информацию о языке.
Я также воспроизвел ту же проблему на Android 8.1.0 Asus Rog Phone
MIME для той же дорожки — audio/mp4a-latm. Я пробовал аудиофайл *.m4a, но с ним возникла та же проблема.
Декодером на неисправных устройствах кажется OMX.google.aac, но я я нашел другие устройства с этим декодером, которые работают нормально.



Данные MediaFormat
Хорошее устройство (Galaxy 21 Plus)
Плохое устройство (Razer Phone) 2)




максимальный битрейт
96000
96000


isDMCMMExtractor
1
1


частота дискретизации
48000
48000


идентификатор трека
2
2


mime
audio/mp4a-latm
audio/mp4a-latm


профиль
2

Код: Выделить всё

Field Missing

битрейт
96000
96000


язык
дан
und


aac-профиль
2
2


трек-четвёртый
- 1

Код: Выделить всё

Field Missing

задержка кодировщика
2112

Код: Выделить всё

Field Missing

durationUs
725333
725333


количество каналов
2
2


битов на выборку
16
16


заполнение кодировщика
705

Код: Выделить всё

Field Missing

максимальный размер ввода
524308
65538


csd-0
[ 17, -112]
[17, -112]



Используемый файл создан с помощью интерфейса командной строки FFMPEG и содержит 8 звуковых дорожек, но я также извлек из него звук и использовал его для тестирования с той же проблемой.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»