我有两个1920x1080PNG文件,center.png和right.png,它们是相同的,只不过right.png中的图像水平移动325像素。
使用mlt,我使用无损FFV1格式制作了一个2秒长的视频,显示了1秒的center.png,然后显示了right.png的1秒。这是我的档案,foo.mlt
<?xml version='1.0' encoding='utf-8'?>
<mlt>
<profile width="1920" height="1080"
display_aspect_num="1920" display_aspect_den="1080"
sample_aspect_num="1" sample_aspect_den="1"
colorspace="709" progressive="1"
frame_rate_num="30" frame_rate_den="1"/>
<consumer mlt_service="avformat" properties="lossless/FFV1" target="out.mkv"/>
<producer id="center" mlt_service="qimage" resource="center.png" length="30"/>
<producer id="right" mlt_service="qimage" resource="right.png" length="30"/>
<playlist>
<entry producer="center"/>
<entry producer="right"/>
</playlist>
</mlt> 然后在终端上运行melt foo.mlt,并在我的视频查看器中检查输出文件out.mkv。然而,仔细观察一下,当right.png出现在视频中时,它是轻微扭曲的(带有某种光环类型的人工制品)。这里有一个放大的视图:

奇怪的是,只有right.png图像被扭曲;center.png显示正确,尽管除了定位之外,这两幅图像是相同的。
这是个虫子吗?我不会期望任何图像失真的无损编解码器,但也许我做错了什么。
我的规格:
Ubuntu 20.04.2 LTS,64位
熔体6.25.0
ffmpeg版本4.2.4-1 ubuntu0.1
谢谢
发布于 2021-02-19 02:04:23
“无损失”并不总是没有损失的。在“无损/FFV1 1”的情况下,色度格式为4:2:2,这将使色度分辨率减半:https://github.com/mltframework/mlt/blob/master/presets/consumer/avformat/lossless/FFV1 --这可能与此相关,因为如果需要格式转换,则可能会在不直接降落在色度样本上的像素上引起色度出血。
作为一个实验,您可以尝试将图像移动326像素,而不是325像素,以查看出血是否仍在发生。
前一段时间,还有一个与色度过采样引起出血有关的问题:熔融复合转变为轻微共混。
https://stackoverflow.com/questions/66258174
复制相似问题