enhancementhelp wantedquestion
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
The sound goes well for about 100 seconds and then breaks off.
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("file.mkv");
grabber.start();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("rtmp://live-fra.twitch.tv/app/live_", 1920, 1080, 2);
recorder.setInterleaved(true);
recorder.setVideoOption("tune", "zerolatency");
recorder.setVideoOption("preset", "veryfast");
recorder.setVideoOption("crf", "24");
recorder.setVideoOption("threads", "2");
recorder.setVideoBitrate(4_000_000);
recorder.setPixelFormat(AV_PIX_FMT_YUV420P);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
recorder.setFrameRate(30);
recorder.setGopSize(60);
recorder.setAudioQuality(0);
recorder.setAudioBitrate(grabber.getAudioBitrate());
recorder.setSampleRate(grabber.getSampleRate());
recorder.setAudioChannels(grabber.getAudioChannels());
recorder.setFormat("flv");
recorder.start();
String scale = recorder.getImageWidth() + ":" + recorder.getImageHeight();
FFmpegFrameFilter filter = new FFmpegFrameFilter("fps=fps=30,scale=" + scale + ":force_original_aspect_ratio=1,pad=" + scale + ":(ow-iw)/2:(oh-ih)/2", "volume=2.5", grabber.getImageWidth(), grabber.getImageHeight(), 2);
filter.setAudioChannels(grabber.getAudioChannels());
filter.setSampleFormat(grabber.getSampleFormat());
filter.setSampleRate(grabber.getSampleRate());
filter.setFrameRate(grabber.getFrameRate());
filter.start();
grabber.setVideoFrameNumber(10000);
grabber.setAudioFrameNumber(10000);
FPSCounter fpsCounter = new FPSCounter(fps -> System.out.println("Frame Rate Push - " + fps));
while (true) {
Frame grab = grabber.grabFrame(true, true, true, false, false);
if (grab != null) {
filter.push(grab);
Frame frame = filter.pull();
if (frame != null) {
recorder.record(frame);
}
fpsCounter.render();
}
}