4

Androidでjavacvを使用して一連の画像からビデオを正常に取得しました。新しく作成されたビデオにオーディオをマージする方法に問題があります.Androidまたはjavacvの統合で可能ですか?

Here is my code,


            String path ="/mnt/sdcard/Video_images"; 



    File folder = new File(path);


    File[]    listOfFiles = folder.listFiles();  
        if(listOfFiles.length>0)
        {


      iplimage = new opencv_core.IplImage[listOfFiles.length];


       for (int j = 0; j < listOfFiles.length; j++) {

         String files="";       

       if (listOfFiles[j].isFile()) 
       {
       files = listOfFiles[j].getName();
       System.out.println(" j " +j   + listOfFiles[j]);
         }   


        String[] tokens = files.split("\\.(?=[^\\.]+$)");
       String name=tokens[0]; 

    Toast.makeText(getBaseContext(), "size"+listOfFiles.length, Toast.LENGTH_SHORT).show();    




      iplimage[j]=cvLoadImage("/mnt/sdcard/Video_images/"+name+".jpg");


       }

    } 

//         


                                 FFmpegFrameRecorder recorder = new    
                    FFmpegFrameRecorder("/mnt/sdcard/Video_images      

                   /output"+System.currentTimeMillis()+".mp4",200,150);                                                                                      

         try {
             recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO

             recorder.setFrameRate(24);                     
             recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P


             recorder.start();


            for (int i=0;i<iplimage.length;i++)

               {

                 recorder.record(iplimage[i]);



                }
             recorder.stop();
            }
         catch (Exception e){
             e.printStackTrace();
           }

このコードでは、オーディオ ファイルをマージする方法を教えてください。

4

2 に答える 2

0

ここからダウンロードできる最新バージョンのjavacvで可能です。

mp4 の作成中にオーディオとビデオをマージしたい場合のコードのアイデアを次に示します。

    FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber("song.mp3");   
    grabber1.start(); 
    FFmpegFrameRecorder recorder = new    
    FFmpegFrameRecorder("/mnt/sdcard/Video_images/output"+System.currentTimeMillis()+".mp4",200,150, grabber1.getAudioChannels());   

    try {
        recorder.setVideoCodec(a); //CODEC_ID_MPEG4 //CODEC_ID_MPEG1VIDEO
        recorder.setFrameRate(24);                     
        recorder.setPixelFormat(PIX_FMT_YUV420P); //PIX_FMT_YUV420P            
        recorder.start();

        com.googlecode.javacv.Frame frame1 = new com.googlecode.javacv.Frame();
        for (int i=0;i<iplimage.length;i++)
        {
            frame1 = grabber1.grabFrame();
            recorder.record(frame1);
            recorder.record(iplimage[i]);
        }
        recorder.stop();
        grabber1.stop();

これは 100% 正しいとは限りませんが、良い出発点になるはずです。もちろん、frame1 を記録する前に null でないことを確認する必要があります。

于 2013-04-12T04:27:48.987 に答える
0

Android には、ビデオ ファイルをマージする機能はありません。デバイスでこれを行う必要がある場合は、これを処理できる Java JAR を見つける必要があります。

于 2012-12-11T18:17:56.743 に答える