Android 動画の表示が崩れてしまう場合の対策
こんばんは。
ニシザワです。
本日は、前回紹介したffmpegの続きです。
前回記事はこちら
ffmpegをAndroidにビルドする方法は前回の記事でできたかと思いますが、実際動画を動かすと動画がうまく表示されない時があります。
今回はその対策を書きます。
原因
Androidの仕様で動画の画像は横幅が32の倍数にならないと表示が崩れてしまう。
対策
スケールする場合に32の倍数に指定する。
サンプルコード
以上です。
ありがとうございました。
ニシザワです。
本日は、前回紹介したffmpegの続きです。
前回記事はこちら
ffmpegをAndroidにビルドする方法は前回の記事でできたかと思いますが、実際動画を動かすと動画がうまく表示されない時があります。
今回はその対策を書きます。
原因
Androidの仕様で動画の画像は横幅が32の倍数にならないと表示が崩れてしまう。
対策
スケールする場合に32の倍数に指定する。
サンプルコード
private Point ComputeScaledSize(Point videoSize, Point screenSize){
int alignment = 32;
Point size = new Point();
PointF scaleRatio = new PointF();
if((screenSize.x % alignment) != 0){
screenSize.x = screenSize.x - screenSize.x % alignment;
}
scaleRatio.x = screenSize.x * 1.0f / videoSize.x;
scaleRatio.y = screenSize.y * 1.0f / videoSize.y;
if (scaleRatio.x > scaleRatio.y) {
int hwidth = (int) (videoSize.x * scaleRatio.y);
size.x = hwidth + alignment - hwidth % alignment;
size.y = screenSize.y;
} else {
size.x = screenSize.x;
size.y = (int) (videoSize.y * scaleRatio.x);
}
return size;
}
以上です。
ありがとうございました。