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