我想在Android中使用一些图片和音频文件创建视频。 我搜索了那个,发现有用的库是 opencv,javacv和ffmpeg 。 我使用了那些库并按照流程给出了链接 - https://github.com/bytedeco/javacv
我想知道这个过程
答案 0 :(得分:6)
1)。请从驱动器下载此zip文件: https://drive.google.com/file/d/0B71R0Zw0m1zQM3RVOWNWM2poVHc/edit?usp=sharing
2)解压缩下载的zip并将所有文件放在相同的libs / armeabi文件夹中,如下所示
3)在您的激活中使用以下代码
请导入以下文件。
import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImage;
import com.googlecode.javacv.cpp.avcodec;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
和实际代码
new AsyncTask<Void, Void, Void>() {
ProgressDialog dialog;
protected void onPreExecute() {
dialog = new ProgressDialog(MainActivity.this);
dialog.setMessage("Genrating video, Please wait.........");
dialog.setCancelable(false);
dialog.show();
};
@Override
protected Void doInBackground(Void... arg0) {
File folder = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String path = folder.getAbsolutePath() + "/Camera";
ArrayList<String> paths = (ArrayList<String>) getListOfFiles(
path, "jpg");
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(path
+ "/" + "test.mp4", 400, 400);
videoPath = path + "/" + "test.mp4";
try {
//recorder.setVideoCodec(5);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
//recorder.setFormat("3gp");
recorder.setFormat("mp4");
recorder.setFrameRate(frameRate);
recorder.setVideoBitrate(30);
startTime = System.currentTimeMillis();
recorder.start();
for (int i = 0; i <paths.size(); i++) {
IplImage image = cvLoadImage(path + "/" + paths.get(i));
long t = 3000 * (System.currentTimeMillis() - startTime);
if (t > recorder.getTimestamp()) {
recorder.setTimestamp(t);
recorder.record(image);
}
}
System.out.println("Total Time:- " + recorder.getTimestamp());
recorder.stop();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
dialog.dismiss();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoPath), "video/mp4");
startActivity(intent);
Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT)
.show();
};
}.execute();
请随意询问您是否有任何疑问。