Closed SanBeHappy closed 6 months ago
This is my code:
public static void createMp4(String mp4SavePath, Map<Integer, File> imgMap, int width, int height, CompleteListener listener) throws FrameRecorder.Exception { FFmpegLogCallback.set(); FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(mp4SavePath, width, height); recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setFrameRate(25); recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); recorder.setFormat("mp4"); try { recorder.start(); // Java2DFrameConverter converter = new Java2DFrameConverter(); Log.d("test","imgMap.size() = " + imgMap.size()); for (int i = 0; i < imgMap.size(); i++) { if(imgMap.get(i) == null){ continue; } IplImage image = cvLoadImage(imgMap.get(i).getAbsolutePath());// OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat(); Frame frame = converterToMat.convert(image);
for(int j = 0; j < 30; j++){
recorder.record(frame);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
recorder.stop();
recorder.release();
if(listener != null){
listener.onComplete(mp4SavePath);
}
}
}
@tmm1 Any ideas?
Duplicate of #2046
W Error: [amediacodec @ 0xeb8c5aa0] android.media.MediaCodec$CodecException: Error 0x80001001 W Error: [h264_mediacodec @ 0xeb4814b0] MediaCodec configure failed, Generic error in an external library I onLastStrongRef automatically unlinking death recipients: android.media.IResourceManagerService W org.bytedeco.javacv.FFmpegFrameRecorder$Exception: avcodec_open2() error -542398533: Could not open video codec. (For more details, make sure FFmpegLogCallback.set() has been called.) W at org.bytedeco.javacv.FFmpegFrameRecorder.startUnsafe(FFmpegFrameRecorder.java:791) W at org.bytedeco.javacv.FFmpegFrameRecorder.start(FFmpegFrameRecorder.java:437) W at com.miao.recordandroid7demo.Util.createMp4(Util.java:41) W at com.miao.recordandroid7demo.MainActivity.lambda$onClick$1(MainActivity.java:211) W at com.miao.recordandroid7demo.MainActivity$$ExternalSyntheticLambda1.run(Unknown Source:2) W at java.lang.Thread.run(Thread.java:923)