Odtwarzaj filmy z LibGDX

22

Czy istnieje sposób na odtwarzanie filmów w LibGDX?

Chcę umieścić film jako ekran powitalny w Androidzie, ale nie chcę korzystać z zestawu SDK systemu Android, ponieważ używam LibGDX i jestem prawie gotowy: /

Rudy_TM
źródło
Istnieje wieloplatformowe rozszerzenie renderowania wideo LibGDX
tscissors

Odpowiedzi:

12

Odtwarzanie wideo za pomocą LibGDX zostało zdefiniowane jako poza zakresem projektu. Więc nie , nie możesz odtwarzać filmów przy użyciu LibGDX.

Nie wyklucza to jednak możliwości pisania kodu specyficznego dla Androida do odtwarzania filmów. Oznacza to po prostu, że twoja aplikacja nie utrzyma przenośności LibGDX.

MichaelHouse
źródło
:( ok, dziękuję za tę odpowiedź: / Przypuszczam, że muszę użyć
zestawu
3
Zrobiłem to na Androidzie :) Utworzyłem nową Aktywność i nowy Układ, a kiedy wideo zakończy odtwarzanie, rozpoczynam aktywność z wywołaniem libGDX
Rudy_TM
Miły! To było szybkie, myślę, że nie było to wcale takie trudne.
MichaelHouse
1
@Rudy_TM proszę dodać to jako zaakceptowaną odpowiedź - że obejrzałeś nową aktywność. Pomoże to innym, którzy mają to samo pytanie później.
ashes999
Pisanie kodu specyficznego dla platformy w libgdx jest dość łatwe, więc to, że nie obsługuje wideo po wyjęciu z pudełka, nie oznacza, że ​​nie można tego zrobić, jak sugeruje twoja odpowiedź.
Matsemann
20

Jak powiedział Byte56, w libGDX nie można odtwarzać filmów :( więc zrobiłem to:

Utworzyłem nowe działanie „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();
    }
}

W metodzie „onCompletion” używam zamiaru wywołania mojej nowej aktywności, w której wywołanie „inicjalizacji” silnika libGDX działa

I nowy układ wideoView

<?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
źródło
2
+1 Dziękujemy za opublikowanie tej odpowiedzi, która będzie pomocna dla przyszłych użytkowników.
MichaelHouse
1
Nie ma za co :) Spędziłem dwa dni próbując różnych rzeczy XD i to był ostatni: P
Rudy_TM
2
To zawsze ostatni, prawda? Chyba dlatego, że przestajesz się tym opiekować: str. Gratuluję też prawie ukończenia!
MichaelHouse
@Rudy_TM libgdx.class daj mi błąd (libgdx nie można rozwiązać na typ), jak to naprawić?
LeSam
2
@ G3tinmybelly w swoim manifeście zmień ekran powitalny na aktywność programu uruchamiającego zamiast MainActivity,
Rudy_TM
-1

Oto jak grać: libname to „indiespot-media-0.8.09.jar”, ​​którą możesz zdobyć tutaj .

Jak używać:

  1. Pobierz pełny zip
  2. Skopiuj folder lib w katalogu głównym projektu (ffmpeg zostanie otwarty przez lib ze ścieżką ./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. użyj playerTexturejak zwykle tekstury
vkatz
źródło