2016-12-29 2 views
1

In Android ACodec.cpp setupAVCEncoderParameters, es profile und level von msg (msg->findInt32("profile", &profile)/msg->findInt32("level", &level)) liest, wird die msg von format in MediaCodec.configure() kommen zu werden. Also, ich denke, wir profile/level manuell vor MediaCodec.configure() wie unten einstellen:Welches AVC Profil/Level wird in Android MediaCodec eingestellt, wenn wir diesen Wert nicht manuell einstellen?

format.setInteger(MediaCodec.KEY_PROFILE, MediaCodecInfo.CodecProfileLevel.AVCProfileHigh); 
format.setInteger(MediaCodec.KEY_LEVEL, MediaCodecInfo.CodecProfileLevel.AVCLevel5); 

Natürlich stimme ich zu, es ist keine gute Idee, weil wir konw nicht, ob unser Gerät unterstützt das Profil/Ebene setzen wir . Und ich finde auch, dass der meiste Beispielcode diese Werte überhaupt nicht gesetzt hat.

Zum Beispiel:

MediaFormat format = MediaFormat.createVideoFormat(MIME_TYPE, mWidth, mHeight); 
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); // API >= 18 
format.setInteger(MediaFormat.KEY_BIT_RATE, calcBitRate()); 
format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE); 
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 10) 

mMediaCodec = MediaCodec.createEncoderByType(MIME_TYPE); 
mMediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 

Vielleicht werden sie automatisch eingestellt werden? Wird MediaCodec abfragen, welches Profil/Level das aktuelle Gerät unterstützt und eines automatisch auswählen? Wenn das Gerät mehr als ein Profil/Level unterstützt, welches wird ausgewählt? Das niedrigere Niveau Eins (Grundlinie, z.B.) oder das Höhere Niveau Eins (Hoch, z.B.) & alpha;

Antwort

1

In den meisten Fällen (soweit ich weiß) wird es Grundlinie sein, da höhere Profile (mit aktivierten B-Frames) Sie als Anrufer auf die richtige Handhabung vorbereiten müssen (eine triviale/naive Anwendung könnte dies haben) Annahmen, die bei B-Frames nicht haltbar sind), und ein Encoder mit B-Frames hat eine höhere Latenz.

Verwandte Themen