Копируй качество видео на ffmpeg

1187
Don Donllei

Я хочу использовать 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
Как автоматически получить исходную информацию о кодировке и предварительно установить новый файл? Don Donllei 7 лет назад 0

1 ответ на вопрос

3
LordNeckbeard

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

Похожие вопросы