Объедините изображение в звуковой файл и программно создайте видеофайл в андроиде

12 jagdish [2013-11-19 15:47:00]

Я прочитал учебник библиотеки ffmpeg, чтобы объединить изображение в аудиофайл.

Это выглядит очень сложным, и ошибка с значением среды равна нулю.

Я много исследовал, но не нашел решения.

Есть ли способ Android для объединения изображения и аудиофайла для создания видео?

android ffmpeg audio


2 ответа


6 sham.y [2014-05-27 14:01:00]

Я не компилировал FFMPEG, просто использовал javacv для android и решил мою задачу объединить звук и изображение и сделать его как видеофайл. шаги: Сначала выполните следующие шаги здесь, а затем поместите приведенный ниже код в свою деятельность и убедитесь, что измените путь к входным файлам и выходному файлу.

 new AsyncTask<Void, Void, Void>() {
            ProgressDialog dialog;
            FFmpegFrameRecorder recorder;
            protected void onPreExecute() {
                dialog = new ProgressDialog(RecordActivity.this);
                dialog.setMessage("Genrating video, Please wait.........");
                dialog.setCancelable(false);
                dialog.show();
            };

            @Override
            protected Void doInBackground(Void... arg0) {

                File folder = Environment.getExternalStorageDirectory();
                String path = folder.getAbsolutePath() + "/DCIM/Camera";
               // ArrayList<String> paths = (ArrayList<String>) getListOfFiles(path, "jpg");
                long millis = System.currentTimeMillis();

                videoPath = path + "/" + "test_sham_"+millis+".3gp";

                try {



                //audio grabber
                FrameGrabber grabber2 = new FFmpegFrameGrabber(folder.getAbsolutePath()+"/Samsung/Music/Over_the_horizon.mp3"); 

                //video grabber
                FrameGrabber grabber1 = new FFmpegFrameGrabber(path+"/20140527_133034.jpg"); 
                    grabber1.start();

                    grabber2.start();

                  recorder = new FFmpegFrameRecorder(path
                          + "/" + "test_sham_"+millis+".3gp",  grabber1.getImageWidth(), grabber1.getImageHeight(),2);

                    //recorder.setVideoCodec(5);
                    recorder.setVideoCodec(avcodec.AV_CODEC_ID_MPEG4);
                     // recorder.setVideoCodec(avcodec.AV_CODEC_ID_MP4ALS);

                    recorder.setFormat("3gp");
                  //  recorder.setFormat("mp4");
                    recorder.setFrameRate(frameRate);
                    recorder.setSampleRate(grabber2.getSampleRate());
                    recorder.setVideoBitrate(30);
                    startTime = System.currentTimeMillis();
                    recorder.start();

                    Frame frame1, frame2 = null; 

                    while ((frame1 = grabber1.grabFrame()) != null || 

                          (frame2 = grabber2.grabFrame()) != null) { 

                        recorder.record(frame1); 

                        recorder.record(frame2); 

                    } 

                    recorder.stop(); 

                    grabber1.stop(); 

                    grabber2.stop(); 




                    System.out.println("Total Time:- " + recorder.getTimestamp());

                } 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/3gp");
                startActivity(intent);
                Toast.makeText(RecordActivity.this, "Done:::"+videoPath, Toast.LENGTH_SHORT)
                        .show();
            };
        }.execute();

Ссылки: ref1, ref2


0 Caner [2013-11-19 16:08:00]

ffmpeg не поставляется с телефонами Android. Вам необходимо скомпилировать его самостоятельно для Android и развернуть на устройстве.

FFmpeg на Android

Кажется, кто-то уже это сделал, но, возможно, это не бесплатно для профессионального использования:

https://play.google.com/store/apps/details?id=com.netcompss.ffmpeg4android