【Google フォト対策】ffmpeg で動画軽量化

👉 Encode/AV1 – FFmpeg 

Android端末カメラで取得できる最高品質の動画を撮る。



パソコンのデスクトップ上に置いて、確認したあと、コーデック変換してサイズを下げる。


➜  ls -alh PXL_20201214_211006730.mp4
-rw-r--r--@ 1 nasu  staff   864M 12 15 13:14 PXL_20201214_211006730.mp4


➜  ffprobe -hide_banner PXL_20201214_211006730.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PXL_20201214_211006730.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2020-12-14T21:12:41.000000Z
    com.android.capture.fps: 30.000000
  Duration: 00:02:30.34, start: 0.000000, bitrate: 48225 kb/s
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      rotate          : 90
      creation_time   : 2020-12-14T21:12:41.000000Z
      handler_name    : SoundHandle
    Stream #0:1(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m/bt470bg/smpte170m), 3840x2160, 48030 kb/s, SAR 1:1 DAR 16:9, 29.98 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2020-12-14T21:12:41.000000Z
      handler_name    : VideoHandle
    Side data:
      displaymatrix: rotation of -90.00 degrees


➜ ffmpeg -i PXL_20201214_211006730.mp4 -c:a copy -c:v libx265 -tag:v hvc1 PXL_20201214_211006730_hevc.mp4
...
frame= 4511 fps=5.4 q=31.0 size=  318720kB time=00:02:30.28 bitrate=17373.5kbitsframe= 4512 fps=5.3 q=34.2 Lsize=  323369kB time=00:02:30.30 bitrate=17625.0kbits/s dup=10 drop=5 speed=0.178x
video:319682kB audio:3517kB subtitle:0kB other streams:0kB global headers:2kB muxing overhead: 0.052518%
x265 [info]: frame I:     42, Avg QP:29.28  kb/s: 78656.18
x265 [info]: frame P:   1219, Avg QP:30.59  kb/s: 32333.41
x265 [info]: frame B:   3251, Avg QP:33.83  kb/s: 11025.11
x265 [info]: Weighted P-Frames: Y:10.1% UV:9.8%
x265 [info]: consecutive B-frames: 14.4% 7.1% 8.9% 45.5% 24.1%

encoded 4512 frames in 844.19s (5.34 fps), 17411.49 kb/s, Avg QP:32.91





サイズは1/2以下になるはず。


➜ ls -alh PXL_20201214_211006730*
-rw-r--r--@ 1 nasu  staff   864M 12 15 13:14 PXL_20201214_211006730.mp4
-rw-r--r--  1 nasu  staff   316M 12 15 13:33 PXL_20201214_211006730_hevc.mp4


➜  ffprobe -hide_banner PXL_20201214_211006730_hevc.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'PXL_20201214_211006730_hevc.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.45.100
  Duration: 00:02:30.40, start: 0.000000, bitrate: 17613 kb/s
    Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, progressive), 2160x3840 [SAR 1:1 DAR 9:16], 17412 kb/s, 30 fps, 30 tbr, 15360 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      rotate          : 90
      handler_name    : SoundHandle

スマホで閲覧がメインな今、無駄な高画質動画など本当にいるか?

AV1はとろすぎ。

👉 【Googleフォト】一括で「高画質」へ変換して使用量を無制限にする方法 
👉 Google「バックアップと同期」が謎だったので整理する 
👉 Google フォト から写真や動画を一括で取得する – Google データエクスポート 
👉 「無料」は永遠ではない? 「Google フォト」が容量無制限の保存を終了する意味 | WIRED.jp 
👉 Googleフォトの[高画質]無制限バックアップが'21年6月終了。整理ツールも - Impress Watch 


今はまだ必要な Android ライブラリ の Bill of Materials(BOM) のURLs

以下は、Androidアプリ開発には、必ず使いますよね。

いや使うと良い、か。

 

Kotlin Libraries Bill of Materials

👉 Maven Repository: org.jetbrains.kotlin » kotlin-bom 

 

Kotlinx Coroutines BOM

👉 Maven Repository: org.jetbrains.kotlinx » kotlinx-coroutines-bom 

 

firebase-bom

👉 Google's Maven Repository - BOM 

 

OkHttp BOM

👉 Maven Repository: com.squareup.okhttp3 » okhttp-bom 

latest の更新に注意するためのな。

👉 bom - Google's Maven Repository 
👉 org.jetbrains - Maven Central Repository Search 


Android OS バージョンのシェア 2020-12

minSdkVersion をいくつにするか。

直近から80%までをカバーすることにして公式で確認してみましょう。

👉 配信ダッシュボード  |  Android デベロッパー  |  Android Developers 

今ではもう公式からのデータ公開などありません。

プラットフォームのバージョン
プラットフォームのバージョン情報については、Android Studio の [Create New Project] ウィザードでご確認ください。

 

Android Studio

確認してみます、2020-12-01現在。

Android 6.0 (API 23) 以降をカバーすれば、84.9%となり、8割をカバーすることができることになりますね。

これだけでは、あやしいのでネット上を定番サイトを巡回していきます。

 

AppBrain

AppBrain で確認してみます。


👉 Android OS version market share over time | AppBrain 

計算しやすいように順番に並び替えます。

OS Share (%) Sum (%)
6 7.6 90.6
7.0-7.1 9.8 83.0
8.0-8.1 17.8 73.2
9 24.1 55.4
10 31.1 31.3
11 0.2 0.2

Android7.0 (API24) 以降で、83%をカバーします。

 

StatCounter Global Stats

👉 Mobile & Tablet Android Version Market Share Worldwide | StatCounter Global Stats 

日本では Android8.0 (API26) 以降で 80.42%、世界では Android7.1 (API25) 以降で 81.86%をカバーします。

 

Google Play コンソール

先述の、公式ページに書いていたもう一つの関連メッセージ。


👉 配信ダッシュボード  |  Android デベロッパー  |  Android Developers 

信頼性の高いデータを使ってアプリのターゲティングを管理し、ユーザーのデバイスの特性を把握できるようにするには、Play Console で入手できるアプリの統計情報を活用することをおすすめします。

アプリ開発者向けのサイトになりますが、利用者数が多いアプリを公開していれば、最もリアルな生データになります。

しかし、そのアプリの特性も織り込まれます。

わたしらの公開しているアプリで見てみましょう。

OS Share (%) Sum (%)
7.1 2.02 88.12
8.0 10.35 86.10
8.1 2.09 75.75
9 25.31 73.66
10 46.99 48.35
11 1.36 1.36

Android8.0 (API26) 以降で 86.10% をカバーします。 アプリのユーザーは7割が日本国内を占めます。

 

まとめ

Android端末の国内発売当初から、バージョンシェアを眺めてきていますが、公式のAndroidDeveloperサイトのプラットフォームダッシュボードや、AndroidStudio内のウィザードの情報はこれまでも、かなり古い古すぎでした。

よって、今現在8割超えの minSdkVersion は「26」と決めつけちゃえ。

ちなみに以下も死んでます。

👉 minSdkVersion(@minSdkVersion)さんの返信があるツイート / Twitter 

ちなみに8年前。なつい。


👉 #androidファッション通信 | Facebook