[Java] 纯文本查看 复制代码 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFilePath);
grabber.start();
int audioChannels = grabber.getAudioChannels();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilePath, width, height, audioChannels);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H265); // 设置视频编码为H.265
recorder.setFormat("mpegts");
recorder.setFrameRate(targetFrameRate);
recorder.setVideoBitrate(15000000); // 设置视频比特率,根据需要调整
recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P); // 设置像素格式
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
recorder.setSampleRate(grabber.getSampleRate());
recorder.setAudioBitrate(grabber.getAudioBitrate());
recorder.setTimestamp(grabber.getTimestamp());
recorder.start();
Frame frame;
// 转码并记录每一帧
while (Objects.nonNull((frame = grabber.grabFrame()))) {
recorder.record(frame);
}
recorder.stop();
grabber.stop();
转码前后的视频如果帧率一致就没有问题
如果修改帧率的话就会导致视频播放速度变快,从而导致视频时长也会缩小10秒
应该是时间戳的位置或是最后循环的那段需要修改 但是百度了很久都没找到解决方案
有无大佬接触过的 |