2011-11-17 16 views
9

C'è un modo per creare un video da una serie di immagini su Android? Forse un modo per estendere il MediaRecorder e poter prendere le immagini come input.Crea video da immagini

Cerco di creare veramente il video e di memorizzarlo (come un file mpeg4 per esempio).

Grazie per eventuali suggerimenti.

+0

Benvenuti in Stackoverflow! Se una risposta è utile, si prega di votare.Se la risposta risponde correttamente alla tua domanda, fai clic sul segno di spunta verde accanto ad essa per accettare la risposta. –

+0

Ciao. Sei riuscito a creare alla fine il video in formato mpeg4 da quelle immagini? grazie – Paul

risposta

1

È possibile utilizzare AnimationDrawable in un ImageView.

Aggiungere frame utilizzando il metodo AnimationDrawable.addFrame(Drawable frame, int duration) e avviare l'animazione utilizzando AnimationDrawable.start().

Non sono sicuro che sia l'ideale, ma funzionerebbe.

+0

Ciao iPaulPro e grazie per la risposta. Penso che non sia abbastanza chiaro. Provo veramente a creare il video e lo memorizzo (come un file mpeg4 per esempio). AnimationDrawable non crea alcun output. – HiddenDev

+0

Oh, capisco. Potresti voler modificare la tua domanda per descrivere meglio le tue esigenze. –

+1

Ama come mi si abbassa per aver risposto correttamente alla domanda originale. –

6

Sto anche cercando di fare la stessa cosa. Sono stato consigli di usare Libav. http://libav.org/ Tuttavia, ho bisogno di costruirlo con NDK e attualmente ho alcuni problemi a farlo.

Sto cercando un documento su di esso. Vi terrò aggiornati.

Ho creato un post su di esso: Libav build for Android

+0

Sto anche cercando di ottenere lo stesso compito ma sfortunatamente non mi avvicino, puoi darmi una mano sono totalmente estraneo a ndk, ffmpeg e nessun tutorial migliore disponibile qualsiasi aiuto è apprezzato –

0

Siamo in grado di creare video da immagini utilizzando ffmpeg.

Controlla il mio post per l'utilizzo di ffmpeg in Android.

Usa sotto comando per creare video da immagini inserite nella stessa cartella

String command[]={"-y", "-r","1/5" ,"-i",src.getAbsolutePath(), 
"-c:v","libx264","-vf", "fps=25","-pix_fmt","yuv420p", dest.getAbsolutePath()}; 

Qui,

src.getAbsolutePath() è il percorso assoluto di tutte le immagini in ingresso.

Per esempio, Se tutte le immagini vengono memorizzate nella cartella Immagini all'interno directory foto con i nomi extract_picture001.jpg, extract_picture002.jpg, extract_picture003.jpg ......

. Poi,

String filePrefix = "extract_picture"; 
String fileExtn = ".jpg"; 
File picDir = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES); 
File dir = new File(picDir, "Images"); 
File src = new File(dir, filePrefix + "%03d" + fileExtn); 

Per la creazione di video da immagini inserite nella cartella diversa si necessario creare un file di testo e aggiungere percorsi di immagine ad esso e quindi specificare il percorso del file di testo come opzione di ingresso. Esempio,

Text File

file '/storage/emulated/0/DCIM/Camera/P_20170807_143916.jpg' 
duration 2 
file '/storage/emulated/0/DCIM/Pic/P_20170305_142948.jpg' 
duration 5 
file '/storage/emulated/0/DCIM/Camera/P_20170305_142939.jpg' 
duration 6 
file '/storage/emulated/0/DCIM/Pic/P_20170305_142818.jpg' 
duration 2 

Comando

String command[] = {"-y", "-f", "concat", "-safe", "0", "-i", textFile.getAbsolutePath(), "-vsync", "vfr", "-pix_fmt", "yuv420p", dest.getAbsolutePath()}; 

dove textFile.getAbsolutePath() è il percorso assoluto del file di testo

Dai un'occhiata a questo ffmpeg doc per maggiori informazioni