2016-04-22 3 views
0

Ich habe FFmpeg verwendet, um Video-Transcodierung zu tun, es funktioniert, aber es ist sehr langsam.So transcodieren Sie ein Video mit dem MediaCodec api für Android 4.3+

Ich habe auch versucht, die Intel Inde-Bibliothek, aber funktioniert nicht auf einigen Android-Handys, die ich getestet habe.

Daher möchte ich den MediaCodec Api verwenden, um Video zu transcodieren.

Ich habe einige Beispielcodes von BigFlake gelesen, die mir helfen, etwas Konzept für die API zu gewinnen. Allerdings weiß ich immer noch nicht, wie ich eine Videodatei von einem Format in ein anderes umcodieren kann.

Ich habe keine Erfahrung mit Codec zu arbeiten, und die Strömung Ich denke, ist:

Decode input video file(frame?) -> feed into encoder -> convert the stream to a .MP4 file.

freuen, wenn mir jemand in die richtige Richtung zeigen kann.

Antwort

0

Sie scheinen die Grundlagen bereits zu verstehen. Ihr Arbeitsablauf ist korrekt - füttern Sie den Ausgang des Decoders mit dem Eingang des Encoders. Wenn das Ergebnis eine .mp4-Datei sein soll, senden Sie die AVC-Ausgabe über MediaMuxer.

Die kniffligen Teile haben mit dem zu tun, was Sie mit der Transcodierung erreichen wollen. Das Ändern der Größe oder Bitrate des Videos ist einfach, da Sie den Encoder nur entsprechend konfigurieren müssen. Das Filtern des Videos ist ein wenig komplexer, da Sie OpenGL ES wahrscheinlich aus Performance-Gründen verwenden möchten (10 auf bigflake demonstriert dies). Das Ändern der Bildrate kann kompliziert werden.

Für beste Ergebnisse alles durch Surface tun (erfordert API 18+). Dies setzt voraus, dass Ihr Videodecoder die Ausgabe an eine Oberfläche unterstützt. Wenn nicht, müssen Sie es wahrscheinlich selbst rendern.

Einige zusätzliche MediaCodec-Beispiele finden Sie unter Grafika.

Verwandte Themen