bytedeco/javacv

when I stream my video for about 2 min I got an error "av_interleaved_write_frame() error -32 while writing interleaved video packet"

Open

#2,023 opened on May 9, 2023

View on GitHub
 (15 comments) (0 reactions) (0 assignees)Java (1,583 forks)batch import
help wantedquestion

Repository metrics

Stars
 (6,985 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

 public void liveStreamingVideos(List<String> urls, String rtmpAddress, String tenantCode, int maxSize, double frameRate) {
        try {
            avutil.av_log_set_level(avutil.AV_LOG_INFO);
            FFmpegLogCallback.set();
            int count = 0;
            FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(rtmpAddress, 800, 450, 1);
            recorder.setFrameRate(25); 
            recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); 
            recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); 
            recorder.setFormat("flv");
            long time = 0;
            for (String url : urls) {
                FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("/Users/Downloads/1.webm");
                grabber.setOption("analyzeduration", "10000");
                grabber.setFormat("webm");
                grabber.setFrameRate(25);
                grabber.start();

                int frameWidth = grabber.getImageWidth();
                int frameHeight = grabber.getImageHeight();
             
                if (count == 0) {
                    recorder.start();
                    count++;
                }

                grabber.flush();
                Frame pkt = null;
                while ((pkt = grabber.grabAtFrameRate()) != null) {
                    try {
                       recorder.setTimestamp(pkt.timestamp + time);
                        time = pkt.timestamp + time;
                   
                        recorder.record(pkt);
                        LoggerUtil.info(LOGGER, "push " + pkt.pictType + " : " + time);
                        Thread.sleep((long) frameRate);
                    } catch (Exception e) {
                       System.out.println("jump" +  pkt.pictType + e);
                    }
                }
                grabber.close();
            }
            recorder.close();
        } catch (Exception e) {
            LoggerUtil.error(LOGGER,  e);
        }
}

Contributor guide