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; }
以上です。
ありがとうございました。