Riproduci video con LibGDX


22

C'è un modo per riprodurre video con LibGDX?

Voglio mettere un video come schermata iniziale in Android, ma non voglio usare Android SDK, perché sto usando LibGDX e ho quasi finito: /


Esiste un'estensione per il rendering di video multipiattaforma LibGDX: github.com/libgdx/gdx-video
tscissors

Risposte:


12

La riproduzione di video con LibGDX è stata definita come fuori campo per il progetto. Quindi no , non puoi riprodurre video usando LibGDX.

Ciò non esclude tuttavia la possibilità di scrivere codice specifico per Android per riprodurre video. Significa solo che l'applicazione non manterrà la portabilità di LibGDX.


:( ok grazie per quella risposta: / Suppongo che devo usare Android SDK, grazie :)
Rudy_TM

3
L'ho fatto con Android :) Ho creato una nuova attività e un nuovo layout e quando il video termina la sua riproduzione, inizio l'attività che ha la chiamata a libGDX
Rudy_TM

Bello! È stato veloce, immagino che dopo tutto non sia stato troppo difficile.
MichaelHouse

1
@Rudy_TM si prega di aggiungere questo come risposta accettata - che hai aggirato con una nuova attività. Ciò aiuterà gli altri che hanno la stessa domanda in seguito.
ashes999,

È abbastanza facile scrivere codice specifico per piattaforma in libgdx, quindi solo perché non supporta il video pronto all'uso non significa che non possa essere fatto, come suggerisce la tua risposta.
Matsemann,

20

Come ha detto Byte56, in libGDX non puoi riprodurre video :( quindi ho fatto questo:

Ho creato una nuova attività "SplashScreen"

public class SplashScreen extends Activity implements OnCompletionListener
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.splash);
        String fileName = "android.resource://"+  getPackageName() +"/raw/video";

         VideoView vv = (VideoView) this.findViewById(R.id.surface);
         vv.setVideoURI(Uri.parse(fileName));
         vv.setOnCompletionListener(this);
         vv.start();

    }

    @Override
    public void onCompletion(MediaPlayer mp) 
    {
        // TODO Auto-generated method stub
        Intent intent = new Intent(this, libgdx.class);
        startActivity(intent);      
        finish();
    }
}

Nel metodo "onCompletion", uso l'intento di chiamare la mia nuova attività in cui la chiamata "inizializza" per far funzionare il motore libGDX

E un nuovo layout per il videoView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <VideoView
        android:id="@+id/surface"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center" >

    </VideoView>

</LinearLayout>

2
+1 Grazie per aver pubblicato questa risposta, sarà utile per i futuri visitatori.
MichaelHouse

1
Prego

2
È sempre l'ultimo giusto? Immagino perché smetti di occupartene: p. Complimenti anche per essere quasi finito!
MichaelHouse

@Rudy_TM libgdx.class mi dà un errore (libgdx non può essere risolto in un tipo), come risolverlo?
LeSam,

2
@ G3tinmybelly nel tuo manifest cambia la tua schermata iniziale in attività di avvio anziché in MainActivity,
Rudy_TM

-1

Questo è il modo di giocare: libname è "indiespot-media-0.8.09.jar" che puoi trovare qui .

Come usare:

  1. Scarica zip integrale
  2. Copia la cartella lib nella radice del progetto (ffmpeg verrà aperto da lib con percorso ./lib/ffmpeg/ffmpeg@os postfix @)
player = new MoviePlayer(videoFile);
Texure playerTexture = new Texture(
  player.movie.width(), 
  player.movie.height(), 
  Pixmap.Format.RGBA8888) {

  @Override
  public void bind() {
    Gdx.gl.glBindTexture(0, player.textureHandle);
  }
};
  1. usare playerTexturecome al solito consistenza
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.