web-dev-qa-db-ja.com

ffmpegを使用して.mp4ビデオの上部と下部の黒いバーを削除する

私はffmpegが初めてで、黒用のフィルターがあると聞きました。ビデオの上部と下部にある黒いバーを削除して、黒いバーのない残りのビデオにビデオをトリミングします。ありがとう:)

24
user360123

FFmpegの作物検出と作物フィルター

1.トリミングパラメータを取得する

cropdetect を使用して、 crop フィルターのパラメーターを提供できます。この例では、最初の90秒がスキップされ、10フレームが処理されます。

$ ffmpeg -ss 90 -i input.mp4 -vframes 10 -vf cropdetect -f null -
...
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:215 t:0.215000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:257 t:0.257000 crop=1280:720:0:0
[Parsed_cropdetect_0 @ 0x220cdc0] x1:0 x2:1279 y1:0 y2:719 w:1280 h:720 x:0 y:0 pts:299 t:0.299000 crop=1280:720:0:0

それで、cropdetectによると、crop=1280:720:0:0

2. ffplayでプレビュー

$ ffplay -vf crop=1280:720:0:0 input.mp4

3.クロップフィルターを使用して再エンコードする

$ ffmpeg -i input.mp4 -vf crop=1280:720:0:0 -c:a copy output.mp4

この例では、オーディオを再エンコードする必要がないため、オーディオは ストリームコピー (再多重化)です。

また見なさい


再生中に切り抜き

上記のffplayの例で見たように、一部のプレーヤーでは、再生時にトリミングできます。これには次の利点があります。

  • すぐに得られる喜び;再エンコードする必要はありません
  • 品質は保持されます
43
llogan

@LordNeckbeardの答えは素晴らしいです。ほとんどの場合それをお勧めします。

ffplayはうまく機能し、プレビューもうまくいきましたが、使用していたffmpegのバージョンは、使用していたこのビデオのオーディオに苦労していました。

st:1 error, non monotone timestamps 

実行中のバージョンでは-c:aがサポートされておらず、使用していたビデオでのビットレート変換に問題があったため、提案された回答に問題が生じました。

注:-c:aは、-acodecに置き換えることができます。

私が見つけた最も簡単な代替無料ソリューションは、ハンドブレーキを使用することでした。

オートクロップは黒いバーを問題なく削除しました。

お役に立てば幸いです。

1
phyatt