私は Handbrake CLI が大好きで、これを私が作成した内部ツールとして使用しており、圧縮されていない大きなビデオを HTML5 対応の MP4 に変換するのに役立ちます。
これは、通常の HD ムービー (1920x1080 / 1280x720) では非常にうまく機能しますが、たとえば、YouTube から 720p ビデオを追加すると、エンコーダーによって黒いバーが既に自動的に削除されているため、うまく機能しません。
これは、入力ビデオの解像度が 1280x528 であることを意味します (黒いバーがないため、高さ 720 ではありません)。
したがって、私が持っているプレビュー パネルに合わせるために私がしなければならないことは、パネルの高さに合わせてビデオをスケーリングし、余分な幅をトリミングすることです。
基本的なロジック、基本的な数学、それでもハンドブレーキはすべてを歪め、私を狂気に駆り立てます。
私が使用している行は次のとおりです。
./HandBrakeCLI -i Man_of_Steel.mp4 -e x264 -a none -q 25 -f mp4 -o test.mp4 --optimize -w 714 -l 402 --start-at duration:1 --stop-at duration:3 --クロップ 0:0:130:130
これにより、3 秒間のプレビューが保存されます。
数学は次のとおりです。
int scaledWidth;
int scaledHeight;int targetWidth = 714;
int targetHeight = 402;
float scaleFactor = (float) targetHeight / videoHeight; // 高さに合わせてスケーリング
scaledWidth = (float)videoWidth * scaleFactor; // 974 として出力されます
scaledHeight = (float)videoHeight * scaleFactor; // 402として出力されます
int オフセット = (scaledWidth - targetWidth); // 130px として出力され、各辺をトリミングする必要があります
ただし、ビデオは歪んで表示されます。試行錯誤の結果、見栄えを良くするための正しいオフセットは169であることがわかりましたが、なぜそれが正しい値なのかわかりません。
誰が何が間違っているのかを理解するのを手伝ってくれますか?
ありがとう!