mlt:使用无损编解码器的图像失真
mlt: image distortion using lossless codec
我有两个 1920x1080 PNG 文件,center.png and right.png,除了 right.png
中的图像水平移动了 325 像素外,它们是相同的。
使用mlt XML,我使用无损FFV1格式制作了一个两秒长的视频,显示一秒center.png
,然后一秒right.png
。这是我的文件,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-1ubuntu0.1
谢谢
“无损”并不总是无损。在“lossless/FFV1”的情况下,色度格式为 4:2:2,这会将色度分辨率减半:
https://github.com/mltframework/mlt/blob/master/presets/consumer/avformat/lossless/FFV1
这可能是相关的,因为如果需要格式转换,它可能会导致未直接落在色度样本上的像素出现色度渗色。
作为实验,您可以尝试将图像移动 326 像素而不是 325 像素,看看是否仍然出现出血。
不久前还有另一个问题与色度子采样引起的渗色有关:
我有两个 1920x1080 PNG 文件,center.png and right.png,除了 right.png
中的图像水平移动了 325 像素外,它们是相同的。
使用mlt XML,我使用无损FFV1格式制作了一个两秒长的视频,显示一秒center.png
,然后一秒right.png
。这是我的文件,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-1ubuntu0.1
谢谢
“无损”并不总是无损。在“lossless/FFV1”的情况下,色度格式为 4:2:2,这会将色度分辨率减半: https://github.com/mltframework/mlt/blob/master/presets/consumer/avformat/lossless/FFV1 这可能是相关的,因为如果需要格式转换,它可能会导致未直接落在色度样本上的像素出现色度渗色。
作为实验,您可以尝试将图像移动 326 像素而不是 325 像素,看看是否仍然出现出血。
不久前还有另一个问题与色度子采样引起的渗色有关: