考虑以下bash
脚本(在 Ubuntu 18.04 上,melt 6.6.0),它用于melt
制作幻灯片并在窗口中本地播放(SDL 使用者),主要从https://mltframework.org/blog/making_nice_slideshows/复制(编辑:我知道可以单独指定文件,如https://superuser.com/questions/833232/create-video-with-5-images-with-fadein-out-effect-in-ffmpeg/834035# 834035 - 但这种方法似乎在过渡期间缩放图像,并且在 SDL 窗口中播放之前需要很长时间才能“渲染”,而这个几乎可以即时播放):
echo "
description=DV PAL
frame_rate_num=25
frame_rate_den=1
width=720
height=576
progressive=0
sample_aspect_num=59
sample_aspect_den=54
display_aspect_num=4
display_aspect_den=3
colorspace=601
" > my-melt.profile
mkdir tmppics
convert -background lightblue -fill blue -size 3840x2160 -pointsize 200 -gravity center label:"Test A" tmppics/pic_01.jpg
convert -background lightblue -fill blue -size 3840x2160 -pointsize 200 -gravity center label:"Test B" tmppics/pic_02.jpg
melt -verbose -profile ./my-melt.profile \
./tmppics/.all.jpg ttl=6 \
-attach crop center=1 \
-filter luma cycle=6 duration=4 \
-consumer sdl
- 当我运行上述命令时,视频显示两个图像循环,但帧计数器继续运行,无限增加。如何让它在循环长的确切帧数后停止?
- 据我所知,输出视频的大小由配置文件控制;也就是说,即使我没有指定
-profile
,也会假定一个默认值;那是对的吗? - 原始图像如下所示:
...视频如下所示:
...这意味着纵横比是错误的;另外我可以看到锯齿状的边缘,这意味着视频中的缩放图像没有抗锯齿。
如何使图像适合具有正确纵横比的视频大小,并具有抗锯齿/平滑功能?(我想它与-attach crop center=1
,但我找不到关于它的文档)。
在 SDL 中查看内容并逐步浏览帧时,帧编号是从 0 开始,还是从 1 开始,并且在第 0 帧处显示与第 1 帧相同的帧?
如果我使用
ttl=6
and-filter luma cycle=6 duration=4
,我会得到:
...也就是说,可见过渡从第 7 帧开始(第 6 帧是完整图像 A),持续第 7 和第 8 帧,并在第 9 帧(即完整图像 B)结束;然后在第 13 帧和第 14 帧(第 15 帧是完整图像 A)
但是,如果我使用ttl=6
and -filter luma cycle=6 duration=2
,那么我会得到这个:
...也就是说,没有过渡,图像在第 7 帧立即更改,然后在第 13 帧再次更改,依此类推。
因此,我将第一种情况称为 2 帧的过渡持续时间,第二种情况称为 0 帧的持续时间 - 但选项分别为duration=4
和duration=2
。谁能解释为什么?那两帧的差异去哪儿了?
我可以 - 如果可以的话,如何 - 做同样的幻灯片,除了淡入黑色?我想定义每张图像 6 帧的“生存时间”(ttl)和 4 帧的过渡,例如:
- 首先,显示图像 A 的 4 帧;
- 然后一帧图像 A 褪色,然后是一帧黑色(图像 A 总共 6 帧 TTL,最后 2 次过渡);
- 然后两帧图像 B 褪色(与前 2 帧过渡共 4 帧),然后是另外两帧图像 B 完整(所以这里是图像 B 的 4 帧);
- 然后一帧图像 B 褪色,然后是一帧黑色(图像 B 为 6 帧 TTL);
... ETC。
- 是否可以说服
melt
使用 globbing 来选择幻灯片的图像,而不是使用.all.jpg
? 据我在MLT(Media Lovin' Toolkit)照片幻灯片视频上看到的没有 - 但也许还有另一种方法......