Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用FFmpegFrameRecorder合并音频文件_Android_Audio_Ffmpeg - Fatal编程技术网

Android 使用FFmpegFrameRecorder合并音频文件

Android 使用FFmpegFrameRecorder合并音频文件,android,audio,ffmpeg,Android,Audio,Ffmpeg,我已经使用ffmpegframerecorder成功地合并(而不是连接)了两个.aac音频文件,但是输出文件非常慢。 下面是我使用的代码。 有什么我可以用来加速输出音频文件。它与帧率有关吗 FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber("storage/sdcard0/Audio/audio.aac"); f=new File("/storage/sdcard0/Aud

我已经使用ffmpegframerecorder成功地合并(而不是连接)了两个.aac音频文件,但是输出文件非常慢。 下面是我使用的代码。 有什么我可以用来加速输出音频文件。它与帧率有关吗

FFmpegFrameGrabber frameGrabber =
                new FFmpegFrameGrabber("storage/sdcard0/Audio/audio.aac");      
        f=new File("/storage/sdcard0/Audio/audnew.aac");
        try {
            f.createNewFile();
        } catch (IOException e2) {
            // TODO Auto-generated catch block
            Log.d("def",e2.getLocalizedMessage());
        }
       FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber("/storage/sdcard0/Audio/smoke.aac");
        try {
            frameGrabber.start();
            grabber1.start();
        } catch (org.bytedeco.javacv.FrameGrabber.Exception e1) {
            // TODO Auto-generated catch block
            Log.d("here",e1.getLocalizedMessage());
        } 
        FFmpegFrameRecorder recorde = new FFmpegFrameRecorder(f, frameGrabber.getAudioChannels());
        try {
            recorde.setAudioCodec(AV_CODEC_ID_AAC);
            Log.d("12","here");
            recorde.setFrameRate(12);
            recorde.start();
            Frame frame1 = new Frame();
            Frame frame2 = new Frame();
            for (int i=0;i<1000000;i++)
            {
                frame1 = grabber1.grabFrame();
                frame2 = frameGrabber.grabFrame();
                if (frame1==null || frame2==null) {
                    Log.d("er","Failed cvQueryFrame");
                    frameGrabber.release();
                    grabber1.release();
                    break;
                }
                recorde.record(frame1);
                recorde.record(frame2);

            }
            recorde.stop();
            grabber1.stop();

        }catch(Exception e){
            Log.d("abc", e.getLocalizedMessage());
        }
FFmpegFrameGrabber帧捕获器=
新的FFmpegFrameGrabber(“storage/sdcard0/Audio/Audio.aac”);
f=新文件(“/storage/sdcard0/Audio/audnew.aac”);
试一试{
f、 createNewFile();
}捕获(IOE2异常){
//TODO自动生成的捕捉块
Log.d(“def”,e2.getLocalizedMessage());
}
FFmpegFrameGrabber grabber1=新的FFmpegFrameGrabber(“/storage/sdcard0/Audio/smoke.aac”);
试一试{
frameGrabber.start();
grabber1.start();
}catch(org.bytedeco.javacv.FrameGrabber.Exception e1){
//TODO自动生成的捕捉块
Log.d(“here”,e1.getLocalizedMessage());
} 
FFmpegFrameRecorder recorde=新的FFmpegFrameRecorder(f,frameGrabber.getAudioChannels());
试一试{
recorde.setAudioCodec(AV_CODEC_ID_AAC);
日志d(“12”,“此处”);
记录设置帧率(12);
record.start();
框架1=新框架();
框架2=新框架();

对于(inti=0;iframe1,frame2=null

            while ((frame1 = grabber1.grabFrame()) != null ||
                    (frame2 = grabber2.grabFrame()) != null) {

                recorder.record(frame1);
                recorder.record(frame2);

            }

使用此选项而不是For循环

帧frame1,帧2=null

            while ((frame1 = grabber1.grabFrame()) != null ||
                    (frame2 = grabber2.grabFrame()) != null) {

                recorder.record(frame1);
                recorder.record(frame2);

            }
使用此选项而不是For循环