diff --git a/src/main/java/org/bytedeco/javacv/FFmpegFrameRecorder.java b/src/main/java/org/bytedeco/javacv/FFmpegFrameRecorder.java index 47f0fa31..c32986ef 100644 --- a/src/main/java/org/bytedeco/javacv/FFmpegFrameRecorder.java +++ b/src/main/java/org/bytedeco/javacv/FFmpegFrameRecorder.java @@ -1350,6 +1350,8 @@ private boolean writeFrame(AVFrame frame) throws Exception { frame.pts(frame.pts() + frame.nb_samples()); // magic required by libvorbis and webm } + int retries = 0; + int maxRetries = 1000; /* if zero size, it means the image was buffered */ got_audio_packet[0] = 0; while (ret >= 0) { @@ -1376,7 +1378,7 @@ private boolean writeFrame(AVFrame frame) throws Exception { /* write the compressed frame in the media file */ writePacket(AVMEDIA_TYPE_AUDIO, audio_pkt); - if (frame == null) { + if (frame == null && retries++ > maxRetries) { // avoid infinite loop with buggy codecs on flush break; }