如何使用ffmpeg-libx265实现无损编码

8

我希望使用x265编码器,通过ffmpeg将16位灰度图像转换为HEVC/mkv视频,并且不会有任何损失。我使用单色12号配置文件。我的第一步是将图像转换为yuv格式:

ffmpeg -f image2 -i "C:\DATA FOLDER\images%d.png" video.yuv

我尝试将它无损地转换为 .mkv 文件:

ffmpeg video.yuv video.mkv -c:v libx265 -x265-params "profile=monochrome12:crf=0:lossless=1:preset=veryslow:qp=0" 

但我遇到了

Unrecognized option '-lossless' 
Error splitting the argument list : Option not found

当我不写lossless=1时,一切正常,但是我无法通过这种方式获得无损视频。
谢谢您的帮助。
1个回答

6

如果我进行一些更改,它对我有效:

ffmpeg -i video.avi -c:v libx265 \
    -x265-params "profile=monochrome12:crf=0:lossless=1:preset=veryslow:qp=0" \
    video.mkv

这就像您提供的命令一样,只是我使用了不同的输入格式,并在前面加上-i以将其标记为输入文件。
我还将输出文件名放在输出选项之后,否则它们不会被应用,并且我会在输出中得到以下警告:

在命令行中找到了尾随选项。

我不认为您给出的命令会导致您遇到的错误。 libx265不会因为无法识别的参数而报错,但会显示警告,例如:

[libx265 @ 0x563e4520e740] 未知选项:lessloss。

我可以通过尝试将--lossless作为参数添加到ffmpeg中来复现您的确切错误。
ffmpeg --lossless -i video.avi video.mkv

无法识别的选项“-lossless”。 拆分参数列表时发生错误:找不到选项。

2
这个格式的命令对我来说很好用,谢谢!但是请注意,qp=0crf=0可以省略,因为根据x265文档lossless意味着qp=4(“在HEVC中,只有QP=4才是真正的无损量化,因此在编码无损时,x265在其RDO决策中内部使用QP=4。”),并且速率控制也被禁用了。 - Daniel Saner
这不是同一个qp。对于FFmpeg的libx264包装器而言,-qp 0 真正的无损,而不是CRF 0。 - Валерий Заподовников
为什么需要所有这些额外的参数?以下是我通常如何进行无损编码到H265:ffmpeg -i Nexigo-Iris-Mode-Change.mp4 -c:v libx265 -x265-params lossless=1 Nexigo-Iris-Mode-Change-H265.mp4 ``` 我只传递的参数是lossless=1。 这正是文档所说要做的:https://trac.ffmpeg.org/wiki/Encode/H.265 - Raleigh L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接