Копировать качество видео на FFmpeg

Копировать качество видео на FFmpeg

Я хочу использовать FFmpeg для добавления водяного знака, но я хочу, чтобы видео было такого же качества. Как мне это сделать?

Я пытался использовать, -vcodec copy -acodec copyно водяной знак отсутствовал:

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

решение1

Вы используете фильтр, а фильтрация требует перекодирования, поэтому вы не можете использовать -vcodec copyего дляпотоковое копированиевидео. Если вы хотите "того же качества", то вам нужно использовать кодер без потерь:

ffmpeg -i video.mp4 -i image.png -filter_complex overlay -c:v libx264 -crf 0 -c:a copy -movflags +faststart output.mp4
  • Полученный файл может быть огромным: это ожидаемо для выходных данных без потерь.

  • Ваш проигрыватель или устройство, возможно, не сможет воспроизвести файл без потерь.

  • Если вам нужен вывод «визуально без потерь», который технически не является таковым, но выглядит почти так, то используйте -crf 18вместо -crf 0.

  • Нет необходимости вфильмФильтр источника. Просто добавьте свое наложенное изображение как на входе, как и любой другой файл, как показано в моем примере.

  • Поскольку вы используете PHP, я предполагаю, что вы собираетесь представить видео через прогрессивную загрузку. Добавьте, -movflags +faststartчтобы начать воспроизведение до того, как файл будет полностью загружен.

Связанный контент