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"

Aperta

#2023 aperta il 9 mag 2023

 (15 commenti) (0 reazioni) (0 assegnatari)Java (1583 fork)batch import
help wantedquestion

Metriche repository

Star
 (6985 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

 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);
        }
}

Guida contributor