AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Versuch FFMPEG unter Android zum Laufen zu bekommen
Thema durchsuchen
Ansicht
Themen-Optionen

Versuch FFMPEG unter Android zum Laufen zu bekommen

Ein Thema von TurboMagic · begonnen am 15. Aug 2020 · letzter Beitrag vom 21. Aug 2020
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#1

Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 15. Aug 2020, 16:04
Hallo,

wie der eine oder andere sicher schon gelsen hat, versuche ich Renate Schaaf's
FFMPEG Videoerzeugungs Demo unter ANdroid zum Laufen zu bekommen.

Ich bin damit zwar schon etwas weiter gekommen, hänge jetzt aber fest.
Anbei mal der aktuelle Stand. Das FFMultidemoLibraries.zip Archiv muss in den
Projektordner entpackt werden, da dort die für Android 32 bit nötigen "shared objects"
drin sind.

Ich bin inzwischen soweit, dass ich diese geladen bekomme und das Bestimmen von
Codecs hab ich von Dateiendung auf MIME-Type umgestellt, da ersteres unter Android
immer Probleme verursachte bzw. nichts fand für .mp4.

So, das Problem ist nun der Aufruf der Funktion
ret := avcodec_open2(c, codec, @CodecSetup.OptionsDictionary);
in UBitmaps2VideoM's Konstruktor.

Der liefert als Rückgabewert immer -13, was keine Berechtigung bedeutet.
Dabei ist es egal, ob ich als Video Ausgabepfad den GetSharedDownloadsPath
nutze und vorher Schreibberechtigung auf den externen Speicher anfordere, oder
ob ich nur nach GetDocumentsPath schreiben will.

Was für eine Berechtigung fehlt mir da?
Angehängte Dateien
Dateityp: zip FFMultiDemoLibraries.zip (4,83 MB, 11x aufgerufen)
Dateityp: zip FFMPEGMultiDemo.zip (4,06 MB, 12x aufgerufen)

Geändert von TurboMagic (15. Aug 2020 um 16:04 Uhr) Grund: Vertippt
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 15. Aug 2020, 19:32
Versuch mal nil statt @CodecSetup.OptionsDictionary, was anderes fällt mir nicht ein.

Ich habe festgestellt, dass die strings die ich übergeben habe, wenn PAnsichar erforderlich war, nicht ordentlich 0-terminiert sind. Win32 fand das wohl nicht schlimm. Aber vielleicht trägt das zu den Android-Problemen bei. So habe ichs jetzt geändert:

Delphi-Quellcode:
  bytes := TEncoding.UTF8.GetBytes(aString);
  SetLength(bytes,Length(bytes)+1);
  bytes[Length(bytes)-1]:=Byte(#0);
PAnsiChar(@bytes[0])
enthält dann den richtigen string. Wenn das irgendwie weniger "von hinten durch die Brust ins Auge" geht, wäre ich interessiert.

Zur Erklärung: Unter Android ist
PAnsiChar = MarshaledAString;
Renate

Geändert von Renate Schaaf (15. Aug 2020 um 19:44 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#3

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 16. Aug 2020, 08:55
Hallo,

danke für deine Ideen. Habe beide umgesetzt, ist nur leider auch noch nicht die Lösung...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 16. Aug 2020, 10:55
Für dein 30 FPS Problem ist das aber eine ziemlich umständliche Lösung.
Leider hattest du keine Rückmeldung mehr dazu gegeben:
https://www.delphipraxis.net/205189-...rmausgabe.html
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#5

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 16. Aug 2020, 14:52
Für dein 30 FPS Problem ist das aber eine ziemlich umständliche Lösung.
Leider hattest du keine Rückmeldung mehr dazu gegeben:
https://www.delphipraxis.net/205189-...rmausgabe.html
Mittels eines anderen testprogramms haben wir mal testhalber einen Video erzeugt und das wäre zumindest
ein funktionierender Lösungsansatz. Unser Video würde auch nur wenige Sekunden Lang.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#6

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 19. Aug 2020, 19:39
Hallo,

bin noch nicht dazu gekommen es auszuprobieren,
aber könnte es sein, dass das was hier beschrieben ist:

https://github.com/bmegli/hardware-v...coder/issues/5

mit rein spuckt?
Ich weiß jetzt nicht ob wir den h264 encoder selektiert haben da die
Namen in der Encoder Auswahlliste leider leer sind (muss mal die Demo so umbauen, dass
nicht die Namen gelistet werden sondern was anderes aussagekräftiges)

Grüße

TurboMagic

PS: Renate, wie weit ist deine Üublikation als Open Source gediehen?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#7

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 19. Aug 2020, 20:21
Ok, ich sah' inzwischen dass im Code ein entsprechender Aufruf der anderen Funktion vorher drin ist.
Also mal doch testhalber einen anderen Codec probieren. Für meinen Versuch mittels MIME-Type video/mp4
bekomme ich immerhin 2 gelistet.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.826 Beiträge
 
Delphi 12 Athens
 
#8

AW: Versuch FFMPEG unter Android zum Laufen zu bekommen

  Alt 21. Aug 2020, 12:13
Hallo,

klappt jetzt:

1. doch über Dateiendung gehen, der ursprüngliche Code war doch ok

2. Anzeige der Encoder so umbauen, dass bei Android nicht der long_name sondern
der name angezeigt wird.

3. Den Versuch den bevorzugten Encoder zu ermitteln bei Android unterlassen,
da das eine Exception verursacht

4. Vor dem Erzeugen des Videos (TPath.GetPublicDownloadsPath) Berechtigung für
exteral storage abfragen und im Event davon dann erst den Video erzeugen.

Dann gibt's kein Berechtigungsgemecker mehr...

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz