bytedeco/javacv
View on GitHubFFmpegFrameRecorder after record video,video size is below origin video?
Open
#1,554 opened on Dec 18, 2020
help wantedquestion
Repository metrics
- Stars
- (6,985 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
public static void recordVideo(InputStream inputStream1, String outputFilename) throws CreativeFactoryException {
try {
FFmpegFrameGrabber grabber1 = new FFmpegFrameGrabber(inputStream1);
grabber1.start();
int w = grabber1.getImageWidth();
int h = grabber1.getImageHeight();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilename, w, h, grabber1.getAudioChannels());
initFrameRecorder(grabber1, recorder);
recorder.start();
while (true) {
Frame frame = grabber1.grabFrame();
if (frame == null) {
break;
}
recorder.record(frame);
}
grabber1.stop();
recorder.stop();
} catch (FrameGrabber.Exception | FrameRecorder.Exception e) {
throw new CreativeFactoryException("Failed to concat video.", e);
}
}
private static void initFrameRecorder(FFmpegFrameGrabber grabber, FFmpegFrameRecorder recorder) {
recorder.setVideoCodec(grabber.getVideoCodec());
recorder.setAudioCodec(grabber.getAudioCodec());
recorder.setFormat("mp4");
recorder.setFrameRate(grabber.getFrameRate());
recorder.setAspectRatio(grabber.getAspectRatio());
recorder.setAudioBitrate(grabber.getAudioBitrate());
// recorder.setAudioChannels(grabber.getAudioChannels());
recorder.setVideoBitrate(grabber.getVideoBitrate());
// 我的笔记本上只有这个值能work,原因不明
recorder.setSampleFormat(8);
// recorder.setSampleFormat(grabber.getSampleFormat());
recorder.setSampleRate(grabber.getSampleRate());
}
audioBitrate and videoBitrate is downing 1kbps