Sorry for bad English...:(
I want to create video from images located on SD Card and also each frame/image stay on screen min 1 sec or any value(like 2,3,4 sec).
I am using the javacv/opencv library for that.
I have use the below code but not work for me i get error given below.
I have put my method and error log also, please help me as soon as possible. Thanks in advance
public void createVideo()
{
String path ="/mnt/sdcard/images/";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
IplImage[] iplimage = (IplImage[]) new IplImage[listOfFiles.length];
if(listOfFiles.length>0)
{
for (int j = 0; j < listOfFiles.length; j++)
{
String files="";
if (listOfFiles[j].isFile())
{
files = listOfFiles[j].getName();
}
String[] tokens = files.split("\\.(?=[^\\.]+$)");
String name=tokens[0];
System.out.println(" j " + name);
iplimage[j]=cvLoadImage("/mnt/sdcard/images/"+name+".jpg");
}
}
File videopath = new File(path);
videopath.mkdirs();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(path+"video"+System.currentTimeMillis()+".mp4",320,480);
try {
recorder.setVideoCodec(13); //CODEC_ID_MPEG4
//CODEC_ID_MPEG1VIDEO
recorder.setVideoBitrate(50);
recorder.setFrameRate(10);
recorder.setPixelFormat(2); //PIX_FMT_YUV420P
recorder.start();
int x = 0;
int y = 0;
for (int i=0;i< 300 && x<listOfFiles.length;i++)
{
recorder.record(iplimage[x]);
if (i>(y+10)) {
y=y+1;
x++;
}
}
recorder.stop();
}
catch (Exception e){
e.printStackTrace();
}
}
But i get this one error please
04-09 12:36:26.130: W/System.err(10201): com.googlecode.javacv.FrameRecorder$Exception: avcodec_open2() error -22: Could not open video codec.
04-09 12:36:26.131: W/System.err(10201): at com.googlecode.javacv.FFmpegFrameRecorder.startUnsafe(FFmpegFrameRecorder.java:492)
04-09 12:36:26.131: W/System.err(10201): at com.googlecode.javacv.FFmpegFrameRecorder.start(FFmpegFrameRecorder.java:267)
04-09 12:36:26.131: W/System.err(10201): at com.example.imagetovideo.MainActivity.createVideo(MainActivity.java:107)
04-09 12:36:26.131: W/System.err(10201): at com.example.imagetovideo.MainActivity$1.doInBackground(MainActivity.java:57)
04-09 12:36:26.131: W/System.err(10201): at com.example.imagetovideo.MainActivity$1.doInBackground(MainActivity.java:1)
04-09 12:36:26.131: W/System.err(10201): at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-09 12:36:26.131: W/System.err(10201): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-09 12:36:26.131: W/System.err(10201): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-09 12:36:26.131: W/System.err(10201): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-09 12:36:26.131: W/System.err(10201): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-09 12:36:26.131: W/System.err(10201): at java.lang.Thread.run(Thread.java:841)
please help me!!!!:) Thank in advance