Transcodieren von Audio- / Video- / Bilddateien in Android-Geräten

8

Ich arbeite an einer Chat-Anwendung wie whatsApp, ich möchte die Mediendatei transcodieren, bevor ich sie auf den Server hochlade. Ich habe so viele Links durchgespielt, aber nicht entscheiden können, welche Methode ich verwenden soll in android?

  • FFMPEG Ich habe festgestellt, dass es sich um einen sehr CPU-intensiven Prozess handelt, der mehr Akkuleistung verbrauchen wird

  • Media Codec Ich möchte die Transcodierung mit dem Mediacodec durchführen, aber keine geeigneten Schritte zum Verständnis des Prozesses finden.

Der beste Link, um eine Idee zum Transkodieren zu erhalten

Bibliothek zum Umcodieren mit Medien-Codec (Es hat viele Bugs)

    
Anshu P 28.09.2016, 16:19
quelle

2 Antworten

1

Wir haben beide Implementierungen für unsere Videoschnitt-App verwendet. Im Grunde genommen haben wir die MediaCodec-Implementierung verwendet, wenn die Android-Version & gt; = 4.3 ist und ansonsten FFMPEG verwendet.

Das Problem bei der Verwendung von FFMPEG:

  1. Wie Sie sagten, CPU-intensiver Prozess verbrauchen so mehr Batterie
  2. Der x264-Encoder ist unter der GPL lizensiert, also sollten Sie stattdessen den OpenH264-Encoder verwenden, der nur das Baseline-Profil unterstützt, daher ist die Videoqualität nicht die beste
  3. Da der Software-Encoder verwendet wurde, ist die Verarbeitungsgeschwindigkeit relativ langsam, zumindest im Vergleich zur MediaCodec-Implementierung

MediaCodec hat jedoch auch einige Nachteile, zum Beispiel:

  1. Wenn Sie Transcodierung durchführen möchten, muss die Android-Version & gt; = 4.3 sein, es sei denn, Sie möchten selbst mit der Farbformatkonvertierung umgehen, was völlig unordentlich ist, da jeder Hersteller seine eigene Farbformat-Implementierung haben kann. (Seit 4.3 unterstützt MediaCodec die Kodierung über die Eingabeoberfläche)
  2. Der Hardware-Encoder kann sich bei verschiedenen Modellen unterschiedlich verhalten. (Zum Beispiel kann ein Encoder B-Frames erzeugen, was von android MediaMuxer noch nicht unterstützt wird, daher sollten Sie ffmpeg für den Muxing-Part verwenden)

Ich sollte also sagen, wenn Sie nur eine neue Android-Version unterstützen, sollten Sie mediacodec verwenden, aber wenn Sie sicher sein wollen (einfacher Code zu schreiben, der auf allen Geräten funktioniert) und die Leistung nicht wirklich stört, verwenden Sie FFMPEG mit OpenH264

    
jfawkes 10.10.2016, 08:08
quelle
0

Der MediaCodec von Android ist eine relativ bessere Möglichkeit, auf dem Client zu transkodieren, da er eine eigene Low-Level-Pufferverarbeitung verwendet. Aber es bietet keine aufwendige Optimierungsfreiheit wie FFMpeg. Was MediaCodec-Quellcode betrifft, so ist es auch CPU-intensiv, um die Puffer zu halten und zu verarbeiten, aber es ist tatsächlich weniger als FFmpeg.

    
Karthik 08.10.2016 18:50
quelle

Tags und Links