1

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

<?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 ответ1

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .