Error recording audio with FFmpegFrameGrabber

151 views Asked by At

I am attempting to combine an Audio source with Buffered images to create a video like so:

public static void compileVideo(BufferedImage[] bufferedImages, String audioPath , String savePath) throws FFmpegFrameRecorder.Exception, FrameGrabber.Exception {
        FrameGrabber grabber = new FFmpegFrameGrabber(audioPath); // need this for audio
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(savePath, 316, 100, grabber.getAudioChannels());
        FFmpegLogCallback.set();

        
        //grabber.setAudioChannels(grabber.getAudioChannels());
        System.out.println(grabber.getAudioChannels());
        // set up the recorder video info
        recorder.setFrameRate(60);
        recorder.setFormat("mp4");
        recorder.setVideoQuality(0); // highest quality

        // set recorder audio info
        recorder.setSampleFormat(grabber.getSampleFormat());
        recorder.setSampleRate(grabber.getSampleRate());
        recorder.setAudioQuality(0); // highest quality
        
        grabber.start();
        recorder.start();

        for (BufferedImage image: bufferedImages) {
            recorder.record(Java2DFrameUtils.toFrame(image)); // convert buffered image to frame and record it
            recorder.record(grabber.grabFrame()); //TODO: Grab multiple audio frames because there are more audio frames than video frames (BufferedImages)
        }
        recorder.stop();
        grabber.stop();
    }

However, it throws the following error:

Exception in thread "main" org.bytedeco.javacv.FFmpegFrameRecorder$Exception: No audio output stream (Is audioChannels > 0 and has start() been called?) (For more details, make sure FFmpegLogCallback.set() has been called.)
    at org.bytedeco.javacv.FFmpegFrameRecorder.recordSamples(FFmpegFrameRecorder.java:1154)
    at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1021)
    at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1010)
    at com.Lazzza.imageToVideo.compileVideo(imageToVideo.java:31)
    at com.Lazzza.Main.main(Main.java:22)

grabber.getAudioChannels returns 2. Will also note that the file format I am using is .wav

Any help would be appreciated thanks

0

There are 0 answers