2016-04-10 22 views
0

Ich verwende Exoplayer, um Videos aus dem Internet zu laden.Exoplayer - Video-Stretching vermeiden

Wenn die Videos geladen sind und im Container angezeigt werden, wird das Video automatisch gedehnt, während das Flag MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT im Videorenderer festgelegt wird.

this._videoRenderer = new MediaCodecVideoTrackRenderer(this._context, source, MediaCodecSelector.DEFAULT, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT); 

Layout:

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/selfie_slider_slide_thumbnail" 
     android:layout_gravity="center|center_vertical" 
     android:visibility="gone" /> 

    <SurfaceView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/selfie_slider_slide_video" 
     android:layout_gravity="center|center_vertical" /> 
</LinearLayout> 

Das Bild korrekt angezeigt wird, aber nicht das Video. Hier sind zwei Beispiele richtig das Problem veranschaulichen:

  • Dies ist die Miniaturansicht im Innern des Behälters This is the thumbnail inside the container

  • Dies ist das Video, wenn es geladen wird. Sie können sehen, dass es gestreckt wird (nicht die Aufmerksamkeit auf die schwarzen Linien zahlen, ist dies ein schlechtes Abschneiden) This is the video once it is loaded

Ich glaube, ich könnte den Behälter nach der Größe der Miniaturansicht werden Ändern der Größe, aber das würde Das bedeutet, dass ich den Container jedes Mal ändern muss, wenn sich das Video ändert, also versuche ich, einen besseren Weg zu finden. Wenn jemand eine Vermutung hat, nehme ich es!

Antwort

1

Sie können entweder den Exoplayer AspectRatioFrameLayout oder in der vorherigen Version eine AspectRatioTextureView verwenden. Sie müssen das Ereignis onVideoSizeChanged empfangen und das TextureView/FrameLayout-Verhältnis aktualisieren: