我正在使用 jcodec 库将一系列图像转换为视频,以及诸如淡入淡出/翻转等过渡/动画...
在此转换过程中,我对每个图像使用 SequenceEncoder 类的以下函数。
public void encodeNativeFrame(Picture pic) throws IOException {
if (toEncode == null) {
toEncode = Picture.create(pic.getWidth(), pic.getHeight(), encoder.getSupportedColorSpaces()[0]);
}
// Perform conversion
transform.transform(pic, toEncode);
// Encode image into H.264 frame, the result is stored in '_out' buffer
_out.clear();
ByteBuffer result = encoder.encodeFrame(toEncode, _out);
// Based on the frame above form correct MP4 packet
spsList.clear();
ppsList.clear();
H264Utils.wipePS(result, spsList, ppsList);
H264Utils.encodeMOVPacket(result);
// Add packet to video track
outTrack.addFrame(new MP4Packet(result, frameNo * 1, (int)FPS, 1, frameNo, true, null, frameNo * 1, 0));
frameNo++;
result = null;
}
每一帧,在这个过程中都需要很长时间(大约一分钟)
特别是,以下语句需要很长时间 -
ByteBuffer result = encoder.encodeFrame(toEncode, _out);
即使将 4 张图像系列转换为带有过渡/动画的视频也至少需要 7 分钟。
需要建议来加快这一进程。