web-dev-qa-db-ja.com

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
Don Donllei

フィルタを使用していて、フィルタリングには再エンコードが必要なため、-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を使用してください。

  • movieソースフィルターは必要ありません。私の例に示すように、他のファイルと同じように、入力のようにオーバーレイ画像を追加するだけです。

  • PHPを使用しているので、プログレッシブダウンロードを介してビデオを提示することを想定しています。 -movflags +faststartを追加して、ファイルが完全にダウンロードされる前に再生を開始できるようにします。

4
llogan