Closed hou718945431 closed 1 year ago
我使用FFmpegFrameRecorder拉取rtsp流,然后逐帧解析过了一会获取到的都是null了,但rtsp流还是存在的,以下是我的代码
` FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtsp://10.40.152.162:8554/rtp/0BEBD622"); FFmpegFrameRecorder recorder = null; try { grabber.setOption("rtsp_transport", "tcp"); grabber.start(); //流媒体输出地址,分辨率(长,高),是否录制音频(0:不录制/1:录制) recorder = new FFmpegFrameRecorder("rtmp://10.40.152.162:1935/device/2",grabber.getImageWidth(),grabber.getImageHeight(), grabber.getAudioChannels() );
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);// 直播流格式 recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC); //recorder.setFormat("rtp_mpegts");// 录制的视频格式 recorder.setFormat("flv"); recorder.setOption("rtsp_transport","tcp"); recorder.setFrameRate(25);// 帧数 recorder.setVideoBitrate(400000); recorder.start(); avutil.av_log_set_level( avutil.AV_LOG_ERROR); while (true) { // 获取当前帧的图像数据 Frame frame = grabber.grabFrame(); if(frame==null){ System.out.println("拉取流帧为空"); grabber.start(); continue; } recorder.record(frame); } catch (Exception e) { e.printStackTrace(); } finally { if (null != grabber) { try { grabber.stop(); } catch (Exception e) { e.printStackTrace(); } } if (recorder != null) { try { recorder.stop(); } catch (Exception e) { e.printStackTrace(); } } }`
我使用FFmpegFrameRecorder拉取rtsp流,然后逐帧解析过了一会获取到的都是null了,但rtsp流还是存在的,以下是我的代码
` FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtsp://10.40.152.162:8554/rtp/0BEBD622"); FFmpegFrameRecorder recorder = null; try { grabber.setOption("rtsp_transport", "tcp"); grabber.start(); //流媒体输出地址,分辨率(长,高),是否录制音频(0:不录制/1:录制) recorder = new FFmpegFrameRecorder("rtmp://10.40.152.162:1935/device/2",grabber.getImageWidth(),grabber.getImageHeight(), grabber.getAudioChannels() );