Videoqualität auf FFmpeg kopieren

Videoqualität auf FFmpeg kopieren

Ich möchte FFmpeg verwenden, um ein Wasserzeichen hinzuzufügen, aber ich möchte, dass das Video die gleiche Qualität hat. Wie mache ich das?

Ich habe versucht, es zu verwenden -vcodec copy -acodec copy, aber es war ohne Wasserzeichen:

ffmpeg -y -i treino.mp4 -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -vcodec copy -acodec copy video2.mp4

Antwort1

Sie verwenden einen Filter und das Filtern erfordert eine Neukodierung, daher können Sie nicht verwenden, -vcodec copyumStreamkopiedas Video. Wenn Sie die „gleiche Qualität“ wünschen, müssen Sie einen verlustfreien Encoder verwenden:

ffmpeg -i video.mp4 -i image.png -filter_complex overlay -c:v libx264 -crf 0 -c:a copy -movflags +faststart output.mp4
  • Die resultierende Datei kann sehr groß sein: Dies ist bei verlustfreien Ausgaben zu erwarten.

  • Ihr Player oder Gerät kann die verlustfreie Datei möglicherweise nicht abspielen.

  • Wenn Sie eine „visuell verlustfreie“ Ausgabe wünschen, die technisch gesehen nicht verlustfrei ist, aber nahezu verlustfrei erscheint, verwenden Sie -crf 18anstelle von -crf 0.

  • Keine Notwendigkeit für dieFilmQuellfilter. Fügen Sie einfach Ihr Overlay-Bild wie jede andere Datei als Eingabe hinzu, wie in meinem Beispiel gezeigt.

  • Da Sie PHP verwenden, gehe ich davon aus, dass Sie die Videos per progressivem Download präsentieren. Fügen Sie hinzu, -movflags +faststartdass die Wiedergabe beginnen kann, bevor die Datei vollständig heruntergeladen ist.

verwandte Informationen