如果您要在网络上放置视频,则可以使用HTML5的视频循环属性: http://www.w3schools.com/tags/att_video_loop.asp
例如 http://cordes.ca/Working/clip.html ,它从音乐作品中循环一个短的x264编码的慢动作片段。
也可以看看 将视频转换为apng / png?
AFAICT,没有ffmpeg支持的视频容器格式(例如mp4,mkv,avi,nut,ogm),这些格式在容器元数据中有循环计数。所以你是对的,你必须将重复的输入帧序列馈送到视频编解码器,并希望编码器能够找到大量的冗余。
您可以调用gif,mng和webp视频格式,因为您可以在其中存储任何帧序列。但是,除了为其设计的单个静止图像编解码器之外,这些容器格式都不支持任何内容。它们都支持循环动画,可能都是非循环计数,可以提供你想要的2分钟。
ffmpeg -framerate 15 -loop 1 -i src/b93-'%d.png' -frames 1805 -preset veryslow -crf 23 -movflags +faststart party.mp4
2.5M party.mp4 # see [1] for the encode log
ffmpeg -framerate 15 -i src/b93-'%d.png' -loop 128 containerloop.gif
684K containerloop.gif
...
172K containerloop.webp
ffplay无法播放动画网页,因此请使用vwebp或google chrome。
我不知道为什么你会想要这个。如果你有一个GIF动画,那就玩吧。 ffplay -ignore_loop 0 containerloop.gif
将循环2分钟(因为我用有限的循环计数制作了gif)。
如果您正在为视频编辑项目制作剪辑,我想这是有道理的。
[1] x264具有16个参考帧,最多8个b帧,输入yuv444版本的输入。
frame= 1805 fps=7.2 q=-1.0 Lsize= 2540kB time=00:02:00.20 bitrate= 173.1kbits/s
video:2518kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.872666%
[libx264 @ 0x1a787e0] frame I:8 Avg QP:21.35 size: 18650
[libx264 @ 0x1a787e0] frame P:515 Avg QP:16.45 size: 1044
[libx264 @ 0x1a787e0] frame B:1282 Avg QP:25.79 size: 1475
[libx264 @ 0x1a787e0] consecutive B-frames: 0.7% 13.9% 0.8% 84.2% 0.0% 0.0% 0.0% 0.4% 0.0%
[libx264 @ 0x1a787e0] mb I I16..4: 3.4% 64.4% 32.2%
[libx264 @ 0x1a787e0] mb P I16..4: 0.9% 15.9% 0.9% P16..4: 80.9% 0.3% 0.6% 0.0% 0.0% skip: 0.5%
[libx264 @ 0x1a787e0] mb B I16..4: 0.3% 2.8% 0.5% B16..8: 4.8% 3.3% 1.9% direct: 1.2% skip:85.2% L0:35.1% L1:64.0% BI: 0.9%
[libx264 @ 0x1a787e0] Weighted P-Frames: Y:75.0% UV:75.0%
[libx264 @ 0x1a787e0] ref P L0: 1.3% 0.1% 0.7% 0.1% 0.3% 0.0% 24.1% 41.7% 27.4% 0.1% 0.0% 0.0% 0.0% 0.4% 3.5% 0.4%
[libx264 @ 0x1a787e0] ref B L0: 8.7% 1.6% 0.8% 0.1% 0.7% 1.2% 74.6% 2.1% 0.0% 0.1% 0.0% 0.0% 0.4% 9.5%
[libx264 @ 0x1a787e0] ref B L1: 99.5% 0.5%
[libx264 @ 0x1a787e0] kb/s:171.40
注意,平均P帧大小小于平均B帧。
无损模式下的x264,rgb或yuv,无法保持其16个参考帧的排列方式,使其能够在不重新编码的情况下继续引用它们。 IDK足够关于解码器图片排序以及确切地保留哪些帧作为参考以理解原因。