我想在
Android中创建带有一些图像和音频文件的视频.
我搜索了那个,发现有用的库是opencv,javacv和ffmpeg.
我使用了那些库并按照流程给出了链接 –
https://github.com/bytedeco/javacv
我搜索了那个,发现有用的库是opencv,javacv和ffmpeg.
我使用了那些库并按照流程给出了链接 –
https://github.com/bytedeco/javacv
我想知道这个过程
>本机开发工具包是否适用于此任务.即使我们有必要,也是必要的
.so文件与我们一起,因为我使用上面提到的资源完成了任务
只需将.so文件放在libs目录的armeabi文件夹中即可.
>我创建了视频,但要求视频应添加声音
>用户必须在运行时录制声音,并且图像必须来自位图
这也是在运行时创建的.
解决方法
1).请从驱动器下载此zip文件:
https://drive.google.com/file/d/0B71R0Zw0m1zQM3RVOWNWM2poVHc/edit?usp=sharing
https://drive.google.com/file/d/0B71R0Zw0m1zQM3RVOWNWM2poVHc/edit?usp=sharing
2)解压缩下载的zip并将所有文件放在相同的文件夹中,如下面给出的libs / armeabi文件夹
3)在您的活动中使用以下代码
请导入follwing文件.
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();
请随意询问您是否有任何疑问.