Kopieren Sie die Videoqualität auf ffmpeg

1263
Don Donllei

Ich möchte mit ffmpeg ein Wasserzeichen hinzufügen, aber ich möchte, dass das Video die gleiche Qualität hat. Wie mache ich das ? Ich habe versucht -vcodec copy -acodec copy zu verwenden, war aber ohne Wasserzeichen

<?php  echo "Starting ffmpeg...\n\n".'</br>'; echo exec('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 2> out.txt').'</br>';  echo "Done.\n";   ?> 
1
Wie erhalte ich die ursprünglichen Codierungsinformationen automatisch und für die neue Datei voreingestellt? Don Donllei vor 7 Jahren 0

1 Antwort auf die Frage

3
LordNeckbeard

Sie verwenden einen Filter und Filter erfordert Re-Encoding, so dass Sie nicht verwenden können, streamen kopieren Sie das Video. Wenn Sie die "gleiche Qualität" wünschen, müssen Sie einen verlustfreien Encoder verwenden:-vcodec copy

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 riesig sein: Dies wird für verlustfreie Ausgaben erwartet.

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

  • Wenn Sie eine "visuell verlustfreie" Ausgabe wünschen, die technisch nicht verlustfrei ist, aber fast so erscheint, dann verwenden Sie -crf 18statt -crf 0.

  • Keine Notwendigkeit für den Film Quellenfilter. Fügen Sie einfach Ihr Überlagerungsbild wie bei der Eingabe wie bei jeder anderen Datei hinzu, wie in meinem Beispiel gezeigt.

  • Da Sie PHP verwenden, gehe ich davon aus, dass Sie die Videos als progressiven Download präsentieren werden. Hinzufügen, -movflags +faststartdamit die Wiedergabe beginnen kann, bevor die Datei vollständig heruntergeladen ist.