help wantedquestion
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
Hi ! I meet a problem about this function , FFmpegFrameGrabber grabImage(),when I use sdp as grabber's source. If the sdp connection doesn't have any frame , the grabber.grabImage() will spend time about 10s then return null. Is there any solution to let this function return null immediately? I tried something methods like setOption("stime","1") , setTimeout(1),setOption(TimeoutOption.TIMEOUT.getKey(),String.valueOf(TIMEOUT * 50000))...These didn't work.Below is my code. Thanks for your reply!
FFmpegFrameGrabber grabber;
FFmpegFrameRecorder recorder = null;
grabber = new FFmpegFrameGrabber("1111.sdp");
grabber.setVideoOption("vcodec", "copy");
grabber.setAudioChannels(0);
grabber.setOption("protocol_whitelist", "file,udp,rtp");
grabber.setTimeout(1);
grabber.setMaxDelay(1);
grabber.setOption("stime", "1");
grabber.delayedGrab(1);
grabber.setOption
(
TimeoutOption.TIMEOUT.getKey(),
String.valueOf(TIMEOUT * 50000)
);
grabber.start();
String fileName = "sample_rtp_out.h264";
recorder = new FFmpegFrameRecorder(fileName, 640, 480, 0);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setFormat("h264");
recorder.setVideoOption("re", "");
recorder.setVideoOption("vcodec", "copy");
recorder.setAudioChannels(0);
recorder.start();
Frame frame;
while (true)
{
frame=grabber.grabImage();
if(frame!=null)
{
recorder.record(frame);
}else
{
break;
}
}
recorder.stop();
recorder.release();
grabber.stop();