Sto riproducendo video dal mio server in superficie utilizzando la visualizzazione texture, ma il suo allungamento del video e l'impossibilità di mantenere le proporzioni del video. Ma, vorrei mantenere le proporzioni come per il video come in app di vite o instagram.Riproduzione di video in visualizzazione struttura con proporzioni del video
risposta
È possibile modificare la dimensione della vista (utilizzando un FrameLayout personalizzato) oppure utilizzare la matrice TextureView per modificare il modo in cui la texture viene renderizzata.
Esempi di entrambi possono essere trovati in Grafika. L'attività "Riproduci video (TextureView)" dimostra la configurazione della matrice in modo che corrisponda alle proporzioni di un video. Vedere il metodo adjustAspectRatio()
, il cui nucleo è:
Matrix txform = new Matrix();
mTextureView.getTransform(txform);
txform.setScale((float) newWidth/viewWidth, (float) newHeight/viewHeight);
txform.postTranslate(xoff, yoff);
mTextureView.setTransform(txform);
Nota centra così come in scala del video.
È possibile utilizzare ExoPlayer https://github.com/google/ExoPlayer# e controllare la demo completa. Mantiene perfettamente le proporzioni del video.
Ampliando la risposta di Fadden sopra: Se si desidera allineare il video in un altro modo diverso da solo centrarla, modificare queste linee in "adjustAspectRatio) (" Codice del Grafika:
int xoff = (viewWidth - newWidth)/2;
int yoff = (viewHeight - newHeight)/2;
a:
int xoff = 0; //align left
o
int xoff = (viewWidth - newWidth); // align right
o
int yoff = 0; // align top
o
int yoff = (viewHeight - newHeight); // align bottom
Beh io sono troppo tardi per rispondere, ma come ho avuto da Grafika è possibile utilizzare questa funzione
private void adjustAspectRatio(int videoWidth, int videoHeight) {
int viewWidth = mTextureView.getWidth();
int viewHeight = mTextureView.getHeight();
double aspectRatio = (double) videoHeight/videoWidth;
int newWidth, newHeight;
if (viewHeight > (int) (viewWidth * aspectRatio)) {
// limited by narrow width; restrict height
newWidth = viewWidth;
newHeight = (int) (viewWidth * aspectRatio);
} else {
// limited by short height; restrict width
newWidth = (int) (viewHeight/aspectRatio);
newHeight = viewHeight;
}
int xoff = (viewWidth - newWidth)/2;
int yoff = (viewHeight - newHeight)/2;
Log.v(TAG, "video=" + videoWidth + "x" + videoHeight +
" view=" + viewWidth + "x" + viewHeight +
" newView=" + newWidth + "x" + newHeight +
" off=" + xoff + "," + yoff);
Matrix txform = new Matrix();
mTextureView.getTransform(txform);
txform.setScale((float) newWidth/viewWidth, (float) newHeight/viewHeight);
//txform.postRotate(10); // just for fun
txform.postTranslate(xoff, yoff);
mTextureView.setTransform(txform);
}
è possibile utilizzare con exoplayer –
@Sagar Hudge sì, certo che puoi usare exolplayer per riprodurre video, questa domanda è per coloro che non usano alcuna libreria di terze parti per riprodurre video –
Voglio riprodurre video a schermo intero in verticale ma si estendono verticalmente sul ridimensionamento 'FILL', voglio riempire e centro coltura –
- 1. Riproduzione automatica di video (Visualizzazione elenco)
- 2. La riproduzione di video in visualizzazione Web interrompe inaspettatamente la registrazione del video in background?
- 3. Modifica video in riproduzione in video HTML5
- 4. Riproduzione di video in UITableView
- 5. Riproduzione di file video crittografati con VideoView
- 6. iOS riproduzione video con MPMoviePlayerController
- 7. Riproduzione video YouTube con ExoPlayer
- 8. riproduzione di video in UITableViewCell
- 9. riproduzione video pausa HTML5 JavaScript
- 10. Ottieni proporzioni video da FFmpeg
- 11. HTML5 Riproduzione video LAN
- 12. MPMoviePlayer non riproduzione video
- 13. Riproduzione video inversa in OpenCV
- 14. Riproduzione video m3u8 in android
- 15. Riproduzione video inversa in iOS
- 16. FFmpeg - Cambia la risoluzione del video con proporzioni
- 17. Android - Visualizzazione Web non riproduzione di video YouTube
- 18. HTML5 video - riproduzione solo di una parte di un video
- 19. Riproduzione di video su AVD con PhoneGap
- 20. come riprendere lo schermo del video attualmente in riproduzione?
- 21. Riproduzione di video in streaming in WPF
- 22. Android: problema di proporzioni video MediaPlayer
- 23. Riproduzione video con jQuery Mobile e Phoneegap
- 24. Riproduzione video locale nella webview
- 25. Visualizzazione video WebCam con Qt
- 26. Riproduzione video nativa Android con canale alfa
- 27. Riproduzione video GPUImmagine e swift
- 28. html5 riproduzione video scorrendo con la rotellina del mouse
- 29. Controllo della velocità di riproduzione del video in Android
- 30. Incorporamento di video di YouTube con riproduzione automatica E avvio di video in un momento particolare
@fadden si prega di controllare questa domanda https://stackoverflow.com/questions/48988063/how-can-i-scale-video-in-exoplayer-v2-play-video-in-full-screen utilizzando expoplayer è possibile effettuare la scansione nel centro –