【AndroidStudio】JDK8 をアンインストールした

AndroidStudio が Electric Eel となって、embedded JDK も 11 です。


❯ ~/Library/Application\ Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/221.6008.13.2211.9477386/Android\ Studio.app/Contents/jbr/Contents/Home/bin/java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
OpenJDK 64-Bit Server VM (build 11.0.15+0-b2043.56-8887301, mixed mode)

👉 Android Studio Releases List | IntelliJ Platform Plugin SDK hatena-bookmark

Gradle も。


❯ ./gradlew -v

------------------------------------------------------------
Gradle 7.6
------------------------------------------------------------

Build time:   2022-11-25 13:35:10 UTC
Revision:     daece9dbc5b79370cc8e4fd6fe4b2cd400e150a8

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          11.0.16.1 (Homebrew 11.0.16.1+0)
OS:           Mac OS X 13.1 x86_64

なんだか、気分が悪いので JDK8 をアンインストールする。


❯ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    11.0.16.1 (x86_64) "Homebrew" - "OpenJDK 11.0.16.1" /usr/local/Cellar/openjdk@11/11.0.16.1_1/libexec/openjdk.jdk/Contents/Home
    1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/usr/local/Cellar/openjdk@11/11.0.16.1_1/libexec/openjdk.jdk/Contents/Home

❯ sudo rm -rf /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk

❯ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    11.0.16.1 (x86_64) "Homebrew" - "OpenJDK 11.0.16.1" /usr/local/Cellar/openjdk@11/11.0.16.1_1/libexec/openjdk.jdk/Contents/Home
/usr/local/Cellar/openjdk@11/11.0.16.1_1/libexec/openjdk.jdk/Contents/Home

スッキリしましたわ。


  compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
  }

  kotlinOptions {
    jvmTarget = JavaVersion.VERSION_11.toString()
  }

なんか、問題あるのかな?



Android Studio Electric Eel で KMM プロジェクトテンプレートが消えてる件

Android Studio Electric Eel に更新しました。

KMM プロジェクトテンプレートが消えてます。

以前は、以下のようにありました。

たまらず、kdoctor


❯ kdoctor
[✓] Operation System
[✓] Java
[✓] Android Studio
[✓] Xcode
[✓] Cocoapods

Conclusion:
  ✓ Your system is ready for Kotlin Multiplatform Mobile Development!

いけてます。

あれ、どうだったけか。

👉 【KMM】KDoctor って生きてるの? hatena-bookmark

 

📱 Kotlin Multiplatform Mobile プラグインを再度入れる

プラグインが更新時に消えてますね。

JetBrains Marketplace のサイトから Android Studio にプラグインをインストールしてるがどうかを確認できます。

ブラウザ上で右上のボタンからです。

👉 Kotlin Multiplatform Mobile - Android Studio Plugin | Marketplace hatena-bookmark

または、Android Studio 内、設定のプラグイン画面からインストールします。

インストール後は、Android Studio を再起動すると、KMMテンプレートも表示されるようになります。

しかし、ビルドできません。

JDK 11 を再度設定するといけました。

しかし、iOS側がコケる。

ERROR: JAVA_HOME is set to an invalid directory: /Users/jim/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9014738/Android Studio.app/Contents/jre/Contents/Home

Dolphin の embed JDK のパスが残ってます。


👉 Android Studio Releases List | IntelliJ Platform Plugin SDK hatena-bookmark

ここか。

Xcode Settings - Location - Custom Paths


👉 kmm | #Android ファショ通 hatena-bookmark


YouTube の推奨するショート動画 9:16 を ffmpeg で作成する

「縦長で60秒以内」だけで、アップロードして公開できますが、YouTube の推奨する「アスペクト比 9:16」で見やすい画面で公開したいですよね。



ffmpeg で「動画ファイルのアスペクト比の変更」をやってみます。

動画に写ってる映像のアスペクト比はそのままで保持します。

「余白の追加 (pad)」と「切り抜き (crop) 」することで動画ファイルのアスペクト比を 9:16 にする、という話です。

少しやってみたので書いてみます。

以下は、参考になるエントリーです。

👉 Resizing videos with ffmpeg/avconv to fit into static sized player - Super User hatena-bookmark
👉 video - FFmpeg - scale and pad - Super User hatena-bookmark
👉 リサイズする scale | ニコラボ hatena-bookmark

 

🎞️ 考えられる基本パターン

出来上がりのアスペクト比は、9:16 です。

元動画が縦長であれば、

以下のどちらか。

横長であれば、

以下のどちらか。

というかんじで、

「余白の追加 (pad)」や「切り抜き (crop) 」

をします。

 

🎞️ ffmpeg の video_filter を使う

分かりやすくするために、「縦長」、「横長」といいましたが、実際は、元動画のアスペクト比が「9:16」を超えるか超えないか、が大事になります。

元動画アスペクト比が 9:16 より縦長の場合


ffmpeg -i input -vf "pad=ih*9/16:ih:-1:-1" output


ffmpeg -i input -vf "crop=iw:iw/(9/16)" output

元動画アスペクト比が 9:16 より横長の場合


ffmpeg -i input -vf "pad=iw:iw/(9/16):-1:-1" output


ffmpeg -i input -vf "crop=ih*9/16:ih" output

pad / crop 共に、中心に合わせています。

 

🎞️ もう少し便利に

元画像のアスペクト比は ffmpeg は認識できるので、そこを判別させます。

pad するか、crop するかは、動画内容の目視判断で。


ffmpeg \
  -i input \
  -vf "pad='if(lt(iw/ih,9/16),ih*9/16,iw)':'if(lt(iw/ih,9/16),ih,iw/(9/16))':-1:-1" \
  output


ffmpeg \
  -i input \
  -vf "crop='if(lt(iw/ih,9/16),iw,ih*9/16)':'if(lt(iw/ih,9/16),iw/(9/16),ih)'" \
  output

もし、画像が大きすぎる場合は,",scale=720:1280" など追加して、アスペクト比を保持しながら縮小します。

 

🎞️ まとめ

最初のリンクにあるコードでも意図する 9:16 動画 は作成できたのですが、気持ちが悪いので基本的なとこだけ調べてみました。

video filter を以下の形にまとめておけば、出来上がりの width x height を考慮したスクリプトが自在に書けそうです。


-vf "pad='max(iw,ih*(720/1280))':ow/(720/1280):-1:-1,scale=720:1280"


-vf "crop='min(iw,ih*(720/1280))':ow/(720/1280),scale=720:1280"

今後も、公式マニュアルを見ながら、あれこれやってみたいと思います。

👉 pad - Video Filters - FFmpeg Filters Documentation hatena-bookmark
👉 crop - Video Filters - FFmpeg Filters Documentation hatena-bookmark
👉 scale - Video Filters - FFmpeg Filters Documentation hatena-bookmark
👉 Expression Evaluation - FFmpeg Utilities Documentation hatena-bookmark



👉 YouTubeに縦長動画をどうアップするべきか? hatena-bookmark