開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. Android >
  4. Android 動画の表示が崩れてしまう場合の対策
no-image

Android 動画の表示が崩れてしまう場合の対策

こんばんは。
ニシザワです。

本日は、前回紹介した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;
    }

以上です。
ありがとうございました。



  • posted by Nextatスタッフ
  • Android
TOPに戻る