我已经开发了一个Android应用,可让用户创建类似回旋镖的mp4视频。该视频由10张静止图像组成,它们以非常快的速度来回播放。我知道这样的视频(回旋镖效果)可以在播放时轻松地从单个视频文件中循环播放,但是我确实需要创建一个mp4视频,该视频实质上包含已经准备好的回旋镖视频。用户可以在任何外部播放器上下载并播放输出的视频(显然,我没有任何控制权)。
为此,目前我是根据循环图像创建视频的。循环从第1张图片开始,以帧之间0.25秒的延迟转到第10张图片,然后从第10张返回到第1张(包括延迟)。这些循环有5个,从本质上讲,这意味着要从5 * 10 * 2 = 100张图像中创建一个视频。我知道这有点荒谬,所以准备这段视频也很花时间(大约1:40分钟)。
假设输出视频确实必须包含5个来回循环,您可以建议哪种解决方案?我考虑过创建单循环视频(20张图片),然后将其级联5次以创建最终输出视频。但这有什么好处吗?我正在尝试为初学者Android程序员找到一种高效而又可以理解的方式。
答案 0 :(得分:0)
我一直在寻找一种创建飞旋镖视频的方法,并在GitHub上找到了一个很棒的示例。 您可以通过使用FFMPEG库org.bytedeco.javacpp-presets克隆帧来创建视频。
https://github.com/trantrungduc/boomerang-android
This是您可以在代码中自定义视频循环的位置:
for (int k = 0; k < 3; k++) {
for (Frame frame1 : loop) {
frecorder.record(frame1);
}
for (int i=loop.size()-1;i>=0;i--){
frecorder.record(loop.get(i));
}
}
答案 1 :(得分:0)
您可以使用FFMPEG来创建飞旋镖,就像下面的视频一样,这是一个简单的示例代码:-
ffmpeg -i input_loop.mp4 -filter_complex "[0]reverse[r];[0][r]concat,loop=5:250,setpts=N/55/TB" output_looped_video.mp4
1.5秒的视频文件作为名为input_loop.mp4的输入
setpts=N/<VALUE>/TB"
,您可以根据需要更改价值
增加值以加快回旋镖效果
降低值以减慢回旋镖效果