Lire des vidéos avec LibGDX

22

Existe-t-il un moyen de lire des vidéos avec LibGDX?

Je veux mettre une vidéo comme écran de démarrage dans Android, mais je ne veux pas utiliser le SDK Android, car j'utilise LibGDX et j'ai presque fini: /

Rudy_TM
la source
Il existe une extension de rendu vidéo multiplateforme LibGDX
tscissors

Réponses:

12

La lecture de vidéo avec LibGDX a été définie comme étant hors de portée du projet. Donc non , vous ne pouvez pas lire de vidéos avec LibGDX.

Cela n'empêche pas la possibilité d'écrire du code spécifique à Android pour lire des vidéos. Cela signifie simplement que votre application ne maintiendra pas la portabilité de LibGDX.

MichaelHouse
la source
:( ok merci pour cette réponse: / Je suppose que je dois utiliser le SDK Android, merci :)
Rudy_TM
3
Je l'ai fait avec Android :) J'ai créé une nouvelle activité et une nouvelle mise en page, et lorsque la vidéo termine sa lecture, je démarre l'activité qui a appelé libGDX
Rudy_TM
Agréable! C'était rapide, je suppose que ce n'était pas trop difficile à faire après tout.
MichaelHouse
1
@Rudy_TM veuillez ajouter ceci comme réponse acceptée - que vous l'avez contourné avec une nouvelle activité. Cela aidera d'autres personnes qui auront la même question plus tard.
ashes999
Il est assez facile d'écrire du code spécifique à la plate-forme dans libgdx, donc ce n'est pas parce qu'il ne prend pas en charge la vidéo prête à l'emploi, comme votre réponse l'indique.
Matsemann
20

Comme l'a dit Byte56, dans libGDX, vous ne pouvez pas lire de vidéos :( j'ai donc fait ceci:

J'ai créé une nouvelle activité "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();
    }
}

Dans la méthode "onCompletion", j'utilise l'intention d'appeler ma nouvelle activité où l'appel "initialize" pour que le moteur libGDX fonctionne

Et une nouvelle mise en page pour la vidéo

<?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>
Rudy_TM
la source
2
+1 Merci d'avoir posté cette réponse, elle sera utile aux futurs visiteurs.
MichaelHouse
1
Vous êtes les bienvenus :) J'ai passé deux jours à essayer différentes choses XD et ce fut le dernier: P
Rudy_TM
2
C'est toujours le dernier non? Je suppose que parce que vous cessez de vous en occuper: p. Félicitations également pour avoir presque terminé!
MichaelHouse
@Rudy_TM libgdx.class me donne une erreur (libgdx ne peut pas être résolu en un type), comment y remédier?
LeSam
2
@ G3tinmybelly dans votre manifeste, changez votre écran de démarrage en activité de lancement au lieu de MainActivity,
Rudy_TM
-1

Voici comment jouer: libname est "indiespot-media-0.8.09.jar" que vous pouvez obtenir ici .

Comment utiliser:

  1. Télécharger le zip complet
  2. Copier le dossier lib à la racine du projet (ffmpeg sera ouvert par lib avec le chemin ./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. utiliser playerTexturecomme texture habituelle
vkatz
la source