2011-11-17 138 views
9

有没有办法从android上的一系列图像创建视频?也许是一种扩展MediaRecorder并能够将图像作为输入的方式。从图像创建视频

我尝试要真正创建视频,并将其存储(如例如一个MPEG4文件)。

感谢您的任何建议。

+0

欢迎来到Stackoverflow!如果你的回复有帮助,请投票。如果回复成功回答您的问题,请点击旁边的绿色复选标记以接受答案。 –

+0

嗨。您是否设法从这些图像中创建mpeg4格式的视频?谢谢 – Paul

回答

1

您可以在ImageView使用AnimationDrawable

使用AnimationDrawable.addFrame(Drawable frame, int duration)方法添加框架,并使用AnimationDrawable.start()开始动画。

不知道这是否理想,但它会工作。

+0

嗨iPaulPro并感谢您的答案。 我觉得还不够清楚。我试图真正创建视频并将其存储(例如,作为mpeg4文件)。 AnimationDrawable不会创建任何输出。 – HiddenDev

+0

哦,我明白了。您可能想编辑您的问题以更好地描述您的需求。 –

+1

爱我如何得到 - 投票回答正确的问题。 –

6

我也在尝试做同样的事情。我一直建议使用Libav。 http://libav.org/ 但是我需要用NDK来构建它,并且我目前有一些问题。

我在找一些关于它的文档。我会及时向大家发布。

我创建了一个帖子看:Libav build for Android

+0

我也试图实现相同的任务,但不幸的是我没有办法靠近你能帮我吗我完全陌生的ndk,ffmpeg和没有更好的教程可用任何帮助表示赞赏 –

0

我们可以创建使用ffmpeg的影像视频。

看看我post在Android的使用的ffmpeg。下面的命令

用来创建放在同一个文件夹

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

这里图像视频,

src.getAbsolutePath()是所有输入图像的绝对路径。

例如, 如果你所有的图像存储在图像文件夹中的图片目录里面的名字 extract_picture001.jpg,extract_picture002.jpg,extract_picture003.jpg ......

。 然后,

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); 

对于来自不同的放置文件夹中的图像,你 必须创建一个文本文件,并添加图片的路径,然后指定 该文本文件作为输入选择的路径创建视频。 例,

文本文件

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 

命令

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

其中textFile.getAbsolutePath()是文本文件

看看这个ffmpeg的doc的更多信息的绝对路径