2016-08-09 4 views
2

je suis en train de faire une vidéo à partir d'images sélectionnées de la ligne de commande en utilisant FFmpeg Androidcréation vidéo à partir d'images sélectionnées à l'aide FFMPEG par commande ligne Android

utilisant projet this comme ma source im essayant de faire de la vidéo

ceci est la commande im tente de créer une vidéo

String[] ffmpegCommand = {ffmpegBin, 
      "-y", 
      "-qscale", 
      "1", 
      "-r", "" + frameRate, 
      "-i", image1.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image2.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image3.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-i", image4.getAbsolutePath(), 
      "-t", "" + (((4) * 30) + 4), //"-s",heightwidth, 
      "-vcodec", 
      "libx264", 
      "-s", 
      "640x480", 
      outputFile.getAbsolutePath()}; 

mais la vidéo a créé des spectacles est créé moins que 1ère image et vidéo d'une seconde

quel est le problème dans cette déclaration? et pourquoi seulement 1 image est montrée dans la vidéo?

désolé mon mauvais anglais

Répondre

1

Ici, je crée une vidéo de 12 secondes à partir de 4 images, chacune de 3 secondes, avec des effets de fondu en fondu.

Exécutez la commande ci-dessous et assurez-vous que toutes les images ont la même hauteur.

String strCommand = "ffmpeg -loop 1 -t 3 -i " + /sdcard/videokit/1.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/2.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/3.jpg + " -loop 1 -t 3 -i " + /sdcard/videokit/4.jpg + " -filter_complex [0:v]trim=duration=3,fade=t=out:st=2.5:d=0.5[v0];[1:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v1];[2:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v2];[3:v]trim=duration=3,fade=t=in:st=0:d=0.5,fade=t=out:st=2.5:d=0.5[v3];[v0][v1][v2][v3]concat=n=4:v=1:a=0,format=yuv420p[v] -map [v] -preset ultrafast " + /sdcard/videolit/output.mp4; 
+0

merci .. cela a fonctionné pour moi ... –

+0

comme cross fade, fade in, fade out, sont là des transitions plus dans ffmpeg que je peux utiliser pour créer une vidéo d'animation im collé sur la création vidéo avec transition entre les images pour les mois merci à l'avance –

+0

Cela fonctionne parfaitement ! Le problème est que cela prend beaucoup de temps (plus d'une minute!) Savez-vous quelque chose en dehors de l'option ultrarapide? – Aracem

2

Ceci est la commande ffmpeg que vous devez adapter dans votre tableau de chaînes:

ffmpeg -framerate 25 -t 124 -loop 1 -i image1 
     -framerate 25 -t 124 -loop 1 -i image2 
     -framerate 25 -t 124 -loop 1 -i image3 
     -framerate 25 -t 124 -loop 1 -i image4 
     -filter_complex "[0][1][2][3]concat=n=4" 
     -c:v libx264 -s 640x480 outputfile 

règle est que les options d'entrée (framerate, t..etc) vont avant l'entrée d'entrée.

Le filtre de concataison joint les flux d'image ensemble. Si elles sont de tailles différentes, vous devez les redimensionner pour les rendre identiques.

+0

merci pour la réponse mais il me donne erreur sur « -filter_complex » par exemple « un option reconnue « filtre complexe » –

+0

Il est un trait de soulignement, pas un trait d'union -' filter_complex' – Mulvya

+0

« -filter_complex » après en utilisant cela est toujours me donne la même erreur –