Перейти к содержанию
Fire Monkey от А до Я

zonik

Пользователи
  • Постов

    6
  • Зарегистрирован

  • Посещение

Посетители профиля

3 395 просмотров профиля

Достижения zonik

  1. zonik

    Unsupported media file

    Я сталкивался решил проблему использованием бесплатной библиотеки BASS сайт http://www.un4seen.com/ на сайте есть примеры использования на нескольких языках, в том числе и на Delphi
  2. Добрый день Данная тема обсуждалась на форуме (топик не смог найти). Если вам надо снять видео на Android, то стандартного решения в delphi нет (это связано с проблемами в iOS). Вам придётся задать Intent для ОС, и в намерении указать куда сохранять файл. можно перевести в Delphi код с официального сайта Google http://developer.android.com/guide/topics/media/camera.html
  3. Для получения «content» я сделал так var Intent: JIntent; Uri: Jnet_Uri; INStream: JInputStream; OUTStream: JOutputStream; outputfile: string; FFF: JFile; NumRead, NumWritten: Longint; Buffer: TJavaArray<Byte>; begin ... Intent := SharedActivity.getIntent; if (Pos('image/', JStringToString(Intent.getType))>0) or (Pos('audio/', JStringToString(Intent.getType))>0) or (Pos('video/', JStringToString(Intent.getType))>0) or (Pos('application/', JStringToString(Intent.getType))>0) or ('*/*' = JStringToString(Intent.getType)) then begin if JStringToString(Intent.getType) <> '' then begin Parcel := Intent.getParcelableExtra(TJIntent.JavaClass.EXTRA_STREAM); Uri := TJnet_Uri.Wrap(Parcel); if JStringToString(Uri.getScheme) = 'content' then begin if Pos('/mpeg', JStringToString(Intent.getType)) > 0 then outputfile := 'my.mp3' else if Pos('/jpeg', JStringToString(Intent.getType)) > 0 then outputfile := 'my.jpg' else outputfile := 'my.' + copy(JStringToString(Intent.getType), Pos('/', JStringToString(Intent.getType))+1, Length(JStringToString(Intent.getType)));//выдергиваем имя типа для того чтобы сделать его расширением //на случай если в Intent не уточнен тип, а указана *, например image/* if Pos('.*', outputfile) > 0 then outputfile := StringReplace(outputfile, '.*', '.tmp', [rfReplaceAll]); Buffer := TJavaArray<Byte>.Create(4096); INStream := SharedActivityContext.getContentResolver.openInputStream(Uri); try FFF := TJFile.JavaClass.init(StringToJString(<ИМЯ_ПАПКИ>), StringToJString(outputfile)); FFF.setWritable(true, false); OUTStream := TJFileOutputStream.JavaClass.init(FFF); repeat NumRead := inStream.read(buffer); if (NumRead <= 0) then Break; outStream.write(buffer, 0, NumRead); application.ProcessMessages; until NumRead <= 0; outStream.close; inStream.close; except on e: exception do raise Exception.CReate('Error. Can''t copy file'); end; end end end end может не самое оптимальное, но работает, в итоге у вас файл с именем outputfile и в папке <ИМЯ_ПАПКИ>
  4. Подскажите можно ли сделать Android активити, которое будет появляться в меню по намерению ACTION_SEND в неком приложении. При выборе моего активити, он должен будет запуститься и обработать полученный JIntent. Может есть у кого пример? Спасибо за внимание
  5. Не знаю в какую тему определить данный вопрос, но бьюсь с ним долго. В FMX у класса TAudioCapture есть возможность записывать звук с микрофона в файл, в Android для этого используется класс MediaRecorder. В Android этот же класс MediaRecorder используется и для записи видео в файл в заданном формате (например MPEG4). В iOS ситуация аналогичная, там тоже на уровне ОС есть инструментарий для записи видео в файл. Видеозапись FMX не реализована ни для какой из мобильных ОС. Класс TVideoCapture не полон, т.к. позволяет только получать изображение с камеры, но записывать его в файл видеоформата (конечно со звуком) не даёт. Самому написать видеокодек и записывать картинки с камеры в файл - затея нереальная. надо получить хорошее живое видео. Есть решение для iOS на FMX DPF.iOS.Native.Components, где можно воспользоваться нативным иснтрументарием iOS и записать видеофайл, но надо под Android. В DPF.Android.Native.Components видеозаписи нет. Смотрел FFMPEG Android видео получается покадровое и обрывистое, похоже (исходников у меня нет) что берет с камеры картинками и сохраняет в файл. Есть ли у кого какие-нибудь идеи по решению проблемы? Спасибо
×
×
  • Создать...