Copie a qualidade do vídeo no FFmpeg

Copie a qualidade do vídeo no FFmpeg

Quero usar o FFmpeg para adicionar uma marca d'água, mas quero que o vídeo tenha a mesma qualidade. Como faço isso?

Tentei usar -vcodec copy -acodec copymas estava sem marca d'água:

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

Responder1

Você está usando um filtro e a filtragem requer recodificação, então você não pode usar -vcodec copyparacópia do fluxoo vídeo. Se você deseja 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 pode não conseguir reproduzir o arquivo sem perdas.

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

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

  • Como você está usando PHP, presumo que você apresentará os vídeos por meio de download progressivo. Adicione -movflags +faststartpara que possa iniciar a reprodução antes que o download do arquivo seja completo.

informação relacionada