Копируй качество видео на 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 поэтому он может начать воспроизведение до полной загрузки файла.

Другие вопросы по тегам