考虑以下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
,但我找不到这方面的文档)。
...也就是说,可见过渡从第 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
and duration=2
, 分别。谁能解释为什么?那两帧差异哪里去了?
... etc.
- 是否可以说服
melt
使用 globbing 来选择用于幻灯片放映的图像,而不是使用.all.jpg
?据我所知MLT(媒体喜爱工具包)照片幻灯片视频不 - 但也许还有另一种方法......
好的,所以,我花了一些时间研究命令melt
事实证明,实际上有一种非常有效的方法可以更改一堆图像(如果参数数量太长或者终端需要处理的字符太多)。
你想做的是使用-serialise <name of file>.melt
它将存储您的命令(您也可以手动创建此文件)。然后要执行该文件,请使用melt <name of file>.melt
以及您的视频文件的任何其他选项。
格式示例:
melt <images and what to do to them> -serialise <name of file>.melt
Example
创建 Melt 文件(使用 Melt CLI)
melt image1.png out=50 image2.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image3.png out=75 -mix 25 -mixer luma image4.png out=75 -mix 25 -mixer luma <...> -serialise test.melt
.melt 文件格式
测试.融化
image1.png
out=50
image2.png
out=75
-mix
25
-mixer
luma
image3.png
out=75
-mix
25
-mixer
luma
image3.png
out=75
-mix
25
-mixer
luma
image4.png
out=75
-mix
25
-mixer
luma
<...>
Run
melt test.melt -profile atsc_1080p_60 -consumer avformat:output.mp4 vcodec=libx264 an=1
补充笔记
熔化文件的末尾应该有一个额外的返回字符。如果没有的话,Exceeded maximum line length (2048) while reading a melt file.
将被输出
请注意-serialise <name of file>.melt
不会在.melt
file
在编码过程开始之前,Melt 实际上需要一些时间来加载 Melt 文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)