Что это означает при кодировании файла yuv422 в yuv420 с помощью кодирования без потерь libx264?

input.aviУ меня есть закодированный файл AVI, формат HQкоторого yuv422соответствует ffprobe.

Теперь, если я выполню следующую команду

ffmpeg -i input.avi -c:v libx264 -crf 0 -pix_fmt yuv420p out.mp4

Будет ли это out.mp4без потерь по сравнению с input.avi? или это будет "без потерь" кроме половины информации Uи Vпотери?

Нет да. Вы почти сами ответили на свой вопрос в последней строке.
Кстати можно кодировать h.264 в yuv422, но не все плееры будут играть
@stib Спасибо! Я хочу рассчитать PSNR и SSIM между input.aviи закодированным файлом mp4. Но формат yuv отличается, поэтому я кодирую input.aviyuv420p mp4 без потерь, а затем вычисляю PSNR и SSIM.
Просто посмотрите на показатель SSIM для плоскости яркости. U и V в данном случае значения не имеют. Или вы можете понизить дискретизацию AVI до 4:2:0, прежде чем передавать его в фильтры сравнения качества, т.е.[1]format=yuv420p[a];[0][a]psnr..
@Mulvya Спасибо! Не могли бы вы дать полный образец команды? Я новичок в ffmpeg, я не уверен, как добавить [1]format=yuv420p[a];[0][a]psnr..к моей команде

Ответы (1)

Чтобы напрямую сравнить YUV422P AVI и YUV420P MP4,

ffmpeg -i input.avi -i out.mp4
   -filter_complex
      "[0]format=yuv420p,split[avi-p][avi-s];
       [1][avi-p]psnr;[1][avi-s]ssim" -f null -
Это дает среднее значение на терминале, как мы можем вывести файл журнала со значениями каждого кадра? Я пытался -lavfi psnr="stats_file=psnr.log", но не повезло.