微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android中使用图像和音频创建视频

我想在 Android中创建带有一些图像和音频文件的视频.
搜索了那个,发现有用的库是opencv,javacv和ffmpeg.
我使用了那些库并按照流程给出了链接
https://github.com/bytedeco/javacv

我想知道这个过程

>本机开发工具包是否适用于此任务.即使我们有必要,也是必要的
.so文件与我们一起,因为我使用上面提到的资源完成了任务
只需将.so文件放在libs目录的armeabi文件夹中即可.
>我创建了视频,但要求视频应添加声音
>用户必须在运行时录制声音,并且图像必须来自位图
这也是在运行时创建的.

解决方法

1).请从驱动器下载此zip文件
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();

请随意询问您是否有任何疑问.

原文地址:https://www.jb51.cc/android/315931.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐