MediaMuxer-Fehler "Fehler beim Stoppen des Muxers"

8

Ich codiere Camera Vorschaudaten mit MediaCodec mit Mime-Typ "video / avc" und übergebe die codierten Daten (nur Video, kein Audio) an MediaMuxer . Der Muxer scheint gut zu laufen und erstellt eine Ausgabedatei von einiger Größe (d. H. Wird größer, je länger ich aufnehme). Wenn ich jedoch versuche, den Muxer zu stoppen, bekomme ich den Fehler "Fehler beim Beenden des Muxers":

%Vor%

Es gibt einige verdächtige MPEG4Writer-Protokollnachrichten vor dem fehlgeschlagenen Stopp:

%Vor%

Irgendwelche Hinweise, was das verursacht? Nicht sicher, welche weiteren Informationen du brauchst.

    
Andrew Cottrell 21.10.2013, 22:21
quelle

3 Antworten

12
%Vor%

Klingt so, als hätten Sie MediaMuxer#addTrack() nicht mit einem MediaFormat aufgerufen, das die CSD enthielt. Ein Beispiel dafür finden Sie in Code EncodeAndMuxTest.java .

Schauen Sie sich die MPEG4Writer-Implementierung an verwendet von MediaMuxer , gibt es ein isTrackMalformed() check in Zeile 2360; Er setzt ERROR_MALFORMED , wenn die CSD-Daten nicht vorhanden sind, aber nicht sofort zurückgegeben werden. Nichts löscht den Fehler, also macht es eine Menge Arbeit und scheitert dann, was mit dem übereinzustimmen scheint, was Sie sehen.

    
fadden 22.10.2013, 00:15
quelle
3

Ich hatte das gleiche Problem. Während des Schließens des Muxers wurde "Fehler beim Stoppen" angezeigt. Beim Überprüfen meiner gespeicherten Datei in einem ISO-Viewer konnte ich den Track nicht finden.    Ich habe das Problem gelöst, indem ich die Spur erst nach der ersten Ausgabe des Video-Encoders erstellt habe. Hier ist, wie ich meine Spur hinzufüge

%Vor%

Das Medienformat für die Spur wird von abgerufen          mediaCodec.getOutputFormat ()  die wiederum erst nach der Codierung des ersten Frames initialisiert werden. Ich habe meinen Code geändert, um die Spur nach dem ersten codierten Daten (Und natürlich nur einmal) hinzuzufügen. Es funktioniert gut.

    
Sojan P R 24.04.2015 23:21
quelle
2

Es gibt 2 Probleme mit Android 5.0.2 Geräten Moto E 1) Die Breite & amp; Höhe, wenn nicht geliefert Vielfache von 16 seinen Absturz 2) Der mediaBuffer, der nach dem ersten Frame gesetzt wird, wird codiert

    
surya 08.02.2016 13:32
quelle

Tags und Links