Ich habe Probleme in meinem aktuellen Projekt, das Videoverarbeitung erfordert. Grundsätzlich sollte die Crop-Funktion (Video sollte quadriert werden), das Trimmen (Video sollte nicht länger als 30 Sekunden dauern) und die Qualitätsreduzierung (Bitrate sollte 713K betragen) sein.
Ich habe erfolgreich FFmpeg in die Anwendung eingebettet, funktionieren alle Funktionen ganz gut, bis auf ein wichtiges Detail - Verarbeitung nach meinem Chef dauert zu lange Zeit. Bei Videos mit einer Größe von 52 MB für 36 Sekunden dauert es 50 Sekunden, um alle Vorgänge auszuführen (ich trenne das Video auf 30 Sekunden vor jeder anderen Operation). Das Problem ist, dass bei einem parallelen Projekt auf iOS die Videoverarbeitung für größere Dateien etwa 10-15 Sekunden dauert. Ich nehme an, dass es damit zusammenhängt, dass sie das Apple QuickTime-Format benutzen, das offensichtlich von Apple entwickelt wurde, also ist es nicht verwunderlich, dass es ziemlich schnell funktioniert.
Also gut, es war die Einführung, jetzt meine Frage: Gibt es eine Möglichkeit für Android, jedes Video in jeder Qualität (für jetzt können wir davon ausgehen, dass alle Videos in h264 sind) in Zeit von 10-15 Sekunden (nicht mehr als in 30 Sekunden, wie mein Chef sagte)? Eine Alternative zu FFmpeg, die Operationen schneller ausführen kann? Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, solche Arbeit in so kurzer Zeit zu erledigen, da ich mich bereits beim Internetsuchen Gedanken gemacht habe, aber ich möchte sicherstellen, dass es wirklich keine Möglichkeit gibt, solche Arbeit zu verrichten. Wenn jemand mir Links zur Lösung schneller als FFmpeg zur Verfügung stellen kann oder bestätigen kann, dass es keine solche Lösung gibt, werde ich sehr dankbar sein.Android, schnelle Videoverarbeitung
aktualisieren
Dank Alex Cohn habe ich dies mit MediaCodec gelöst. Nach einer Weile, habe ich 20 Sekunden Verarbeitung auf 52MB Video mit Cropping auf Square und Verringerung der Bitrate. Für alle zukünftigen Googler aus hier kann ich vorschlagen, einen Blick auf diese respository zu nehmen: Many stuff about MediaCodec
und genauer auf diese Datei: Extract, edit and encode again, video and audio
Hm, ich habe schon versucht, HW auf FFmpeg zu verwenden, aber es ist fehlgeschlagen. Ich habe natürlich auch die Dokumentation von MediaCodec gelesen, aber ich habe nicht verstanden, wie man das schön integriert. Und es gibt ein Problem, da die minimale API-Version für unser Projekt 15 ist und MediaCodec 16, aber ich denke, dass ich das Team dazu überreden kann, die minimale API auf 16 zu setzen, wenn es notwendig sein sollte. Wie auch immer, ich werde mir MediaCodec genauer ansehen und hoffentlich eine Lösung damit finden :) Was ist mit h264, ja, wir benutzen libx264 und ich habe meinen Chef über Lizenzprobleme informiert.Er sagte, ich solle mich nicht darum kümmern, und überließ es ihm, wie ich genau tat –
HW Unterstützung von FFmpeg bedeutet SIMD Beschleunigung, d. H. Moderate inkrementelle Verbesserung. MediaCodec verwendet den HW-Encoder, der im Wesentlichen durch den Speicherbus begrenzt ist. –
API 15 ist eine seltsame Einschränkung, mit 2,2% Geräten heute und nie eine beliebte Plattform. Entweder bei Lebkuchen bleiben oder zu Jellybean oder höher wechseln. –