Copie a qualidade do vídeo no ffmpeg

1

Eu quero usar o ffmpeg para adicionar uma marca d'água, mas quero que o vídeo tenha a mesma qualidade. Como faço isso ? Eu tentei usar -vcodec cópia -acodec cópia, mas estava sem marca d'água

<?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";


?>
    
por Don Donllei 21.06.2016 / 18:29

1 resposta

3

Você está usando um filtro, e a filtragem requer recodificação. Por isso, não é possível usar -vcodec copy para stream copie o vídeo. Se você quiser a "mesma qualidade", precisará usar um codificador sem perdas:

ffmpeg -i video.mp4 -i image.png -filter_complex overlay -c:v libx264 -crf 0 -c:a copy -movflags +faststart output.mp4
  • O arquivo resultante pode ser enorme: isso é esperado para saídas sem perdas.

  • Seu player ou dispositivo talvez não consiga reproduzir o arquivo sem perdas.

  • Se você deseja uma saída "visualmente sem perdas", que não é tecnicamente sem perdas, mas parece ser quase isso, use -crf 18 em vez de -crf 0 .

  • Não há necessidade do filtro de origem filme . Basta adicionar sua imagem de sobreposição como na entrada como qualquer outro arquivo, como mostrado no meu exemplo.

  • Como você está usando PHP, eu suponho que você vai apresentar os vídeos via download progressivo. Adicione -movflags +faststart para que possa iniciar a reprodução antes que o arquivo seja completamente baixado.

por 21.06.2016 / 22:44