Воспроизведение видео с помощью LibGDX

22

Есть ли способ воспроизвести видео с помощью LibGDX?

Я хочу поместить видео в качестве заставки в Android, но я не хочу использовать Android SDK, потому что я использую LibGDX, и я почти закончил: /

Rudy_TM
источник
Существует кроссплатформенное расширение рендеринга видео в LibGDX: github.com/libgdx/gdx-video
tscissors

Ответы:

12

Воспроизведение видео с помощью LibGDX было определено как выход за рамки проекта. Так что нет , вы не можете воспроизводить видео, используя LibGDX.

Это не исключает возможности написания специального кода для Android для воспроизведения видео. Это просто означает, что ваше приложение не будет поддерживать переносимость LibGDX.

MichaelHouse
источник
:( хорошо, спасибо за этот ответ: / Я полагаю, что я должен использовать Android SDK, спасибо :)
Rudy_TM
3
Я сделал это с помощью Android :) Я создал новое действие и новый макет, и когда видео завершает воспроизведение, я запускаю действие, которое вызывает libGDX
Rudy_TM
Ницца! Это было быстро, я думаю, что это не было слишком сложно сделать в конце концов.
MichaelHouse
1
@Rudy_TM, пожалуйста, добавьте это в качестве принятого ответа - что вы обошли его с новым заданием. Это поможет другим, у кого тот же вопрос позже.
ashes999
Довольно просто написать код, специфичный для платформы, в libgdx, так как тот факт, что он не поддерживает видео из коробки, не означает, что это невозможно сделать, как и предполагает ваш ответ.
Мацеманн
20

Как сказал Byte56, в libGDX вы не можете воспроизводить видео :( поэтому я сделал это:

Я создал новый вид деятельности "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();
    }
}

В методе «onCompletion» я использую намерение вызвать мое новое действие, где вызов «initialize» для работы движка libGDX

И новый макет для просмотра видео

<?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
источник
2
+1 Спасибо за публикацию этого ответа, он будет полезен для будущих посетителей.
MichaelHouse
1
Добро пожаловать :) Я провел два дня, пробуя разные вещи XD, и это был последний из них: P
Rudy_TM
2
Это всегда последний верно? Я думаю, потому что вы перестаете смотреть после этого: с. Также поздравляю с почти сделано!
MichaelHouse
@Rudy_TM libgdx.class выдает ошибку (libgdx не может быть преобразован в тип), как это исправить?
LeSam
2
@ G3tinmybelly в вашем манифесте измените заставку на активность запуска вместо MainActivity,
Rudy_TM
-1

Это способ играть: libname это "indiespot-media-0.8.09.jar", который вы можете получить здесь .

Как использовать:

  1. Скачать полный почтовый индекс
  2. Скопируйте папку lib в корень проекта (ffmpeg откроется lib с путем ./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. использовать playerTextureкак обычно текстуру
vkatz
источник