Error "org.bytedeco.javacv.FrameRecorder$Exception: avcodec_encode_audio2() error -40: Could not encode audio packet."

23 views
Skip to first unread message

叶家俊

unread,
Jan 4, 2021, 9:37:26 AM1/4/21
to javacv
code
----------------------------------------------
String url = "https://shudoon-prt.oss-cn-shenzhen.aliyuncs.com/mp4/8965f11c107eb4c9b24707a950eb8523.mp4";
String outputPath = "eguid.mp3";
int audioChannel=1;
int audioBitrate=16;
int sampleRate=8000;
int audioCodec=avcodec.AV_CODEC_ID_MP3;



FFmpegFrameGrabber grabber =null;
FFmpegFrameRecorder recorder = null;


try {
grabber = new FFmpegFrameGrabber(url);
grabber.setAudioChannels(audioChannel);
grabber.setAudioBitrate(audioBitrate);
grabber.setSampleRate(sampleRate);

recorder = new FFmpegFrameRecorder(outputPath, audioCodec);
recorder.setAudioOption("crf", "0");
recorder.setAudioCodec(audioCodec);
recorder.setAudioBitrate(audioBitrate);
recorder.setAudioChannels(audioChannel);
recorder.setSampleRate(sampleRate);
recorder.setAudioQuality(0);
recorder.setAudioOption("aq", "10");
grabber.start();
recorder.start();
Frame audioSamples = null;
for (; ; ) {
if ((audioSamples = grabber.grab()) != null) {
recorder.setTimestamp(grabber.getTimestamp());
recorder.recordSamples(audioSamples.sampleRate,audioSamples.audioChannels,audioSamples.samples);
} else {

break;
}

}


} catch (org.bytedeco.javacv.FrameGrabber.Exception e1) {
System.err.println("fail");
} catch (Exception e) {
System.err.println("fail");
}finally {
if (grabber != null) {
grabber.close();
}
if (recorder != null) {
recorder.close();
}
}

Samuel Audet

unread,
Jan 4, 2021, 9:47:56 AM1/4/21
to jav...@googlegroups.com
It looks like you're trying to use the "mp3_mf" codec, which is going to
require using the new API of FFmpeg:
https://github.com/bytedeco/javacv/issues/1557
> --
>

叶家俊

unread,
Jan 4, 2021, 10:29:06 PM1/4/21
to javacv
Yes, this is me.
Reply all
Reply to author
Forward
0 new messages