我想尽可能快地使用 FFmpegFrameRecorder 在具有恒定帧速率的同一输出视频中加入多个具有不同帧速率的视频。我正在考虑复制帧以防我想提高帧速率,并在我需要降低帧速率时跳过帧。我正在使用 JavaCV。
除了两次调用记录(图像)之外,有没有更好的复制帧的方法? (输出总是以 mp4 文件格式存储的 h264)类似于 h264 流中的标志,指示当前帧是上一帧的副本,或者跳过冗余编码的其他内容。
最佳答案
a) frameGrabber 需要时间来设置。将分配给采集器的新视频路径的转换/转换不会是瞬时的。这可能需要几秒钟的时间。
b) 这种过渡/转移到新的视频路径,还必须更改记录器的参数-帧率、采样率、高度和宽度。
要处理这两个问题,您需要处理在转换/转换到新视频路径后添加的第一帧,作为一种特殊情况。在这里,您将重置 recoderFramerate、SampleRate、Height 和 Width 的属性以匹配新的 frameGrabber 属性。
此实现应该可以正常工作。
此外,如果您想提高帧速率,请复制帧,并在需要降低帧速率时跳过帧。这两种都会完全扭曲视频。您永远无法达到视频的原始质量。视频帧和声音的滞后将更加明显。
关于android - 使用JavaCV ffmpeg对帧进行两次编码(重复,h264格式)的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244785/