WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Android
システム開発
[Android][Kotlin]選択した動画ファイルの指定秒のサムネイル取得
システム開発担当のTFです。
※Android10対応(他バージョンの場合、細かい部分等が異なる事があります)
やり方
- intentで動画のピッカーを立ち上げる
- registerForActivityResultで受け取る
- 受け取った結果から動画のuriを取得する
- uriからメディアファイルのメタ情報を取得する
- メタ情報から指定秒のサムネイルを取得する
参考
[Android][Kotlin]動画ファイルを選択しファイル名とファイルサイズの取得
【Androidでデータやファイルと戯れる】MediaMetadataRetrieverを使ってファイルのメタデータや動画のキャプチャの取得する
動画の指定秒のフレームをBitmapとして取得する
android ContentProviderで取得したvideoのパスを取得して再生する
サンプル
// 動画のuriの保存用変数
var videoUri : Uri? = null
// intentで動画のピッカー立ち上げ
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.setType("video/*");
activityResult.launch(intent)
// 結果の受け取り
val activityResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == RESULT_OK) {
// intent 取得
val intent = result.data
intent?.data?.let { returnUri ->
// 動画のuriの保存
videoUri = returnUri
contentResolver.query(returnUri, null, null, null, null)
}?.use { cursor ->
// ファイル名等の情報取得
}
}
}
// サムネイル取得
if (videoUri != null){
var mediaMetadataRetriever:MediaMetadataRetriever = MediaMetadataRetriever()
mediaMetadataRetriever.setDataSource(this, videoUri)
// 60秒目のサムネイル生成
var microtime:Long = (60 * 1000 * 1000).toLong()
// サムネイル画像の取得
var thumbnail:Bitmap? = mediaMetadataRetriever.getFrameAtTime(microtime)
}