Putar video dengan LibGDX

22

Apakah ada cara untuk memutar video dengan LibGDX?

Saya ingin meletakkan video sebagai splash screen di Android, tetapi saya tidak ingin menggunakan Android SDK, karena saya menggunakan LibGDX dan saya hampir selesai: /

Rudy_TM
sumber
Ada ekstensi rendering video lintas platform LibGDX
tscissors

Jawaban:

12

Memutar video dengan LibGDX telah didefinisikan sebagai di luar cakupan proyek. Jadi tidak , Anda tidak dapat memutar video menggunakan LibGDX.

Ini tidak menghalangi kemungkinan penulisan kode khusus untuk Android untuk memutar video. Itu hanya berarti aplikasi Anda tidak akan mempertahankan portabilitas LibGDX.

MichaelHouse
sumber
:( ok terima kasih atas jawaban itu: / Saya kira saya harus menggunakan Android SDK, terima kasih :)
Rudy_TM
3
Saya melakukannya dengan Android :) Saya membuat Kegiatan baru dan Tata Letak baru, dan ketika video selesai diputar, saya memulai aktivitas yang memiliki panggilan ke libGDX
Rudy_TM
Bagus! Itu cepat, saya kira itu tidak terlalu sulit untuk dilakukan.
MichaelHouse
1
@Rudy_TM tolong tambahkan ini sebagai jawaban yang diterima - bahwa Anda mengatasinya dengan Kegiatan baru. Itu akan membantu orang lain yang memiliki pertanyaan yang sama nanti.
ashes999
Cukup mudah untuk menulis kode khusus platform dalam libgdx, jadi hanya karena tidak mendukung video di luar kotak, tidak berarti itu tidak dapat dilakukan, seperti yang tersirat dari jawaban Anda.
Matsemann
20

Seperti yang dikatakan Byte56, di libGDX Anda tidak dapat memutar video :( jadi saya melakukan ini:

Saya membuat aktivitas baru "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();
    }
}

Dalam metode "onCompletion", saya menggunakan maksud untuk memanggil aktivitas baru saya di mana "menginisialisasi" panggilan untuk mesin libGDX untuk bekerja

Dan tata letak baru untuk 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>
Rudy_TM
sumber
2
+1 Terima kasih telah mengirimkan jawaban ini, akan sangat membantu pengunjung di masa mendatang.
MichaelHouse
1
Terima kasih :) Saya menghabiskan dua hari mencoba hal-hal yang berbeda XD dan ini adalah yang terakhir: P
Rudy_TM
2
Itu selalu yang terakhir bukan? Saya kira karena Anda berhenti merawatnya: hlm. Juga selamat karena hampir selesai!
MichaelHouse
@Rudy_TM libgdx.class beri saya kesalahan (libgdx tidak dapat diselesaikan ke jenis), bagaimana cara memperbaikinya?
LeSam
2
@ G3tinmybelly dalam manifes Anda, ubah splash screen ke aktivitas peluncur, bukannya MainActivity,
Rudy_TM
-1

Ini cara bermain: libname adalah "indiespot-media-0.8.09.jar" yang bisa Anda dapatkan di sini .

Bagaimana cara menggunakan:

  1. Unduh zip lengkap
  2. Salin folder lib di root proyek (ffmpeg akan dibuka oleh lib dengan path ./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. gunakan playerTexturetekstur seperti biasa
vkatz
sumber