169 похожих чатов

Всем привет. Пытаюсь получить первый кадр с видео. На Google

эмуляторе всё работает, а на реальном устройстве выдаёт ошибку:
java.lang.IllegalArgumentException at android.media.MediaMetadataRetriever.setDataSource
В строке с setDataSource
Предполагаю, что это как-то связано с версиями API, но решение этой проблемы не нашёл.

Можете помочь справиться с ошибкой?

15 ответов

13 просмотров

А дальнейшее описание эксепшна есть?

Судя по документации нужно передавать FileDescriptor, а у вас просто строка. Думаю нужно копать в этом направлении

Тимофей Простов
Попробую покопаться, спасибо

Не слушай никого. Посмотри какие там варианты параметров. Там их 8 штук setDataSource. Среди них есть и строка.

Дмитрий moto_mdv
Судя по документации нужно передавать FileDescript...

Ты все еще за 8000 км от компьютера? Если уж смотреть документацию, то в документации 8 вариантов метода. Среди которых есть и строка. setDataSource public void setDataSource (String path) Sets the data source (file-path or http/rtsp URL) to use. Что в общем-то и подтверждается тем, что на эмуляторе работает корректно.

Мб если версия андройда ниже на реальном устройстве то можно попробовать указать легаси сторедж в манифесте

Andrey
Мб если версия андройда ниже на реальном устройств...

И как это повлияет? Автор вопроса не удосужился в вопросе описать что он там передает в параметре метода. Если там url на видео в интернете, то чем поможет "легаси сторедж"? Мы не знаем всех условий. Ни версии андроидов, ни полного кода проекта. Ни откуда видео берется. Вообще ничего. Какой смысл тренировать в себе телепатические способности?

Seva
И как это повлияет? Автор вопроса не удосужился в ...

Ну если бы ты сам запускал студию хоть иногда знал бы разницу как работает со стореджем андройд на старых версиях и на новых версиях Я кинул предположение которое которое не заняло у меня и больше 5 минут. А так согласен что без логирования/дебагинга это тыкание пальцем в небо

Andrey
Ну если бы ты сам запускал студию хоть иногда знал...

не знаю и знать не хочу. Но если там берется не из файла на файловой системе, то на setDataSource никак не влиет.

Seva
Не слушай никого. Посмотри какие там варианты пара...

А, ну да, можешь в качестве эксперимента поставить targetApi 28, например, и проверить на устройстве. Вполне возможно что неправильно путь к файлу указан (прав у приложения нет). Если в этом причина - то курить как правильно файлы передавать (вроде с 30 апи строже стало, а в 29 можно было флаг в манифесте прописать)

Тимофей-Простов Автор вопроса
Seva
И как это повлияет? Автор вопроса не удосужился в ...

Я передаю uri локального видео, версии андроидов: На эмуляторе 10 На реальном устройстве 12

Тимофей Простов
Я передаю uri локального видео, версии андроидов: ...

Тогда очень похоже, что нужно получить разрешение на доступ в более новом андроиде. Ну и форма uri имеет значение. files:// в новых не работают, если приложение не файл мэнэджер. Хотя это опять же телепатия. Локально для приложения все работает, на любой версии андроида. Надо экстрасенсов вызывать, что бы рассказывали и показывали, что там у вас. И почему эмулятор старой версии андроида, хотя устройства новые.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта