Autore Topic: Animazione 2d (frame by frame) tramite opengl  (Letto 1602 volte)

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Animazione 2d (frame by frame) tramite opengl
« il: 18 Aprile 2012, 20:58:11 CEST »
0
Salve, vi espongo subito il mio problema.
Sto realizzando un applicazione classica quindi senza uso di engine per 3d ecc ecc , dopo aver realizzato la mia animazione con AF l ho esportata in formato jpg , e sono 141 fotogrammi ( 5 secondi circa) in formato hd per sensation ossia 540x960 (circa 6 mega).
Ho utilizzato di primo acchito in quanto facile da reperire AnimationDrawable e con molta sorpresa ho notato che su android 4 non funziona perchè da problemi di memoria , mentre con android 2.2 ad esempio fila tutto liscio.
Cio' che voglio realizzare è una splash screen d'avvio animata ( che si vedrà solo al primo avvio) ma ho purtroppo questo problema.
Cercando in rete anche forum inglesi ecc e quanto pare l'unica soluzione è l'opengl GLSurfaceView  quindi chiedo a voi non avendolo mai usato come posso risolvere la cosa.
Grazie anticipatamente

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #1 il: 19 Aprile 2012, 15:18:31 CEST »
0
Scusa se te lo chiedo ma... i 141 fotogrammi sono TUTTI a 540x960?
Perchè se sono 141 fotogrammi del genere in totale fanno 2mb l'uno * 141 = 280+ MB!!!

Secondo me la soluzione più logica è salvare il tutto come filmato e fare semplicemente un play!

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #2 il: 19 Aprile 2012, 18:17:45 CEST »
0
Si son tutti a 540x960 , il tuo calcolo per caso si basa sul non usare la compressione giusto ?
Avevo pensato anche ad un filmato, infatti cè l ho gia bello pronto in .mp4,  se saresti genitlissimo da spiegarmi come posso inserire un video in un activity (senza il player), te ne sarei grato !




Agg.
Dopo una ricerca mirata videoview , lo provo vi terro' aggiornati
« Ultima modifica: 19 Aprile 2012, 18:35:21 CEST da waterseven »

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #3 il: 19 Aprile 2012, 18:38:25 CEST »
0
Si son tutti a 540x960 , il tuo calcolo per caso si basa sul non usare la compressione giusto ?
Avevo pensato anche ad un filmato, infatti cè l ho gia bello pronto in .mp4,  se saresti genitlissimo da spiegarmi come posso inserire un video in un activity (senza il player), te ne sarei grato !
Si il calcolo è riferito a immagini non compresse. Questo perchè a meno di particolari feature (in windows/directx per esempio c'è DXTC, DirectX Texture Compression un formato supportato da praticamente ogni GPU da qualche anno a questa parte) indipendentemente dal formato in ingresso (png, jpg, bmp) le immagini caricate in memoria non sono compresse.

Quindi se fai 540x960 ti viene circa mezzo milione di pixel, che però devi moltiplicare per 4 se hai un formato RGBA8888. Quindi in memoria ti viene 2 mb ad immagine.

 :-)

Per il video ti consiglio di guardare la sezione apposita.

Gestione dei media - Android Developers Italia

In particolar modo questo: Streaming video - Android Developers Italia

Secondo me ti conviene (come spiegato in quel topic) riprodurre il video puntando al file/risorsa e fargli fare lo streaming. In questo modo invece di caricare tutto quanto in memoria lo legge pezzo per pezzo.

 ;-)


Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #4 il: 19 Aprile 2012, 19:01:15 CEST »
0
Grazie sei un grande !
Stavo provando il caricamento da res inu n nuovo progetto di prova:


Main.xml
Codice (XML): [Seleziona]
 <VideoView android:id="@+id/VideoView01"
        android:layout_width="wrap_content"
         android:layout_height="wrap_content">
       
    </VideoView>

Java Class
Codice (XML): [Seleziona]
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

            VideoView videoView = (VideoView)findViewById(R.id.VideoView01);
            videoView.setVideoPath("res/raw/intro.mp4");
            videoView.start();
    }

Avviato mi interrompe la riproduzione, eppure il formato è mp4 quindi compatibile , incollo il logcat

Codice (XML): [Seleziona]
04-19 16:58:28.678: I/ActivityManager(592): Start proc com.android.anim for activity com.android.anim/.ANIMATIONActivity: pid=1024 uid=10053 gids={}
04-19 16:58:28.938: W/NetworkManagementSocketTagger(592): setKernelCountSet(10053, 1) failed with errno -2
04-19 16:58:29.838: I/AwesomePlayer(573): setDataSource_l('res/raw/intro.mp4')
04-19 16:58:29.918: D/gralloc_goldfish(1024): Emulator without GPU emulation detected.
04-19 16:58:29.948: E/MediaPlayer(1024): error (1, -2147483648)
04-19 16:58:29.968: I/ActivityManager(592): Displayed com.android.anim/.ANIMATIONActivity: +1s368ms
04-19 16:58:30.078: E/MediaPlayer(1024): Error (1,-2147483648)
04-19 16:58:30.078: D/VideoView(1024): Error: 1,-2147483648
04-19 16:58:30.689: W/NetworkManagementSocketTagger(592): setKernelCountSet(10009, 0) failed with errno -2
04-19 16:58:33.498: W/InputManagerService(592): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@41475dd8


Agg. Mi dice questo video non puo' essere avviato , praticamente il programma non crasha , non avvia proprio il video






Provo il topic da te linkato
« Ultima modifica: 19 Aprile 2012, 19:05:55 CEST da waterseven »

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #5 il: 19 Aprile 2012, 19:22:23 CEST »
0
Niente, non lo carica , che sia il codec usato da AF nel rendering dell'animazione ? Sto cavolo di android 4.0 è un po' viziato se non è come vuole non va eh !

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #6 il: 19 Aprile 2012, 21:11:34 CEST »
0
Finalmente ho risolto !!
Per chi puo' interessare , questo è il codice completo e funzionante !! Almeno su android 4

Codice (XML): [Seleziona]
    <VideoView android:id="@+id/video"
        android:layout_width="wrap_content"
         android:layout_height="wrap_content">
       
    </VideoView>


public class ----NOME DELLA CLASSE---  extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       

        showVideo();
    }
  private void showVideo()
  {
       VideoView vd = (VideoView)findViewById(R.id.video);
       Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.intro);
       MediaController mc = new MediaController(this);
       vd.setMediaController(mc);
       vd.setVideoURI(uri);
       vd.start();
  }
}

Per ora ho provato con codec vp8 - Webm e non funziona, un peccato ridotte dimensioni qualità ottima , cosi ho messo su un mp4 e funge!

Grazie ancora undead!

Offline zaxxon

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Archos 101 G9
  • Sistema operativo:
    Ubuntu 10.04
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #7 il: 19 Aprile 2012, 22:25:12 CEST »
0
Io non ho capito dov'è la parte OpenGL in tutto questo?  o_O

Offline waterseven

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    sensation xe
Re:Animazione 2d (frame by frame) tramite opengl
« Risposta #8 il: 19 Aprile 2012, 23:22:41 CEST »
0
Purtroppo nessuno mi ha suggerito come  risolvere tramite opengl, quindi ho risolto diversamente con l'aiuto di undead tramite l uso del viewvideo