Was bedeutet es, wenn eine yuv422-Datei durch verlustfreie libx264-Codierung in yuv420 codiert wird?

Ich habe eine AVI-Datei input.avikodiert, die das Format entsprechend HQhat .yuv422ffprobe

Wenn ich jetzt den folgenden Befehl ausführe

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

Wird die out.mp4im Vergleich zu verlustfrei sein input.avi? oder es wird "verlustfrei" sein, außer dass die Hälfte der UInformationen Vverloren geht?

Nein Ja. Du hast deine Frage in der letzten Zeile so ziemlich selbst beantwortet.
Übrigens können Sie h.264 in yuv422 codieren, aber nicht alle Spieler werden es spielen
@stib Danke! input.aviIch möchte die PSNR und SSIM zwischen einer codierten mp4-Datei berechnen . Aber das yuv-Format ist anders, also codiere ich das input.avi'verlustfreie' yuv420p mp4 und berechne dann PSNR und SSIM.
Schauen Sie sich einfach den SSIM-Score für das Luma-Flugzeug an. U und V sind in diesem Fall nicht relevant. Oder Sie könnten das AVI auf 4:2:0 heruntersampeln, bevor Sie es an die Qualitätsvergleichsfilter weitergeben, dh[1]format=yuv420p[a];[0][a]psnr..
@Mulvya Danke! Würden Sie bitte ein vollständiges Befehlsbeispiel geben? Ich bin neu bei ffmpeg, ich bin mir nicht sicher, wie ich [1]format=yuv420p[a];[0][a]psnr..meinem Befehl etwas hinzufügen soll

Antworten (1)

Um das YUV422P AVI und das YUV420P MP4 direkt zu vergleichen,

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 -
Es gibt einen Durchschnittswert auf dem Terminal aus. Wie können wir eine Protokolldatei mit den Werten jedes Frames ausgeben? Ich habe es versucht, -lavfi psnr="stats_file=psnr.log"aber kein Glück.