0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ffmpeg】Androidでハードウェアエンコード

Last updated at Posted at 2025-10-14

一部の端末では動作しない場合があります。(Redditを見る感じPixel系は✖?)

ハードウェアエンコード

動画の処理をCPUで行うハードウェアエンコードと違い、GPUや専用回路で処理を行うハードウェアエンコードは
CPUの負荷を大きく減らし、また効率もグンと向上します。(最低でも4倍くらい)

有名なので言えばNvidiaのNVENC、AMDのAMF、IntelのQSV、Appleのvideotoolboxがあります。

Androidにもあるよ!!

実はAndroidでもハードウェアエンコードは使用可能です。iOSもそうですが…(iOSはvideotoolbox)

image.png

上の表に書かれている通り、MediaCodecというのが使用できます。
今回はこれを試そうってワケ!

環境

メインスマホであるXiaomi 14T Pro使用する。仕様は以下の通り。

名前 詳細
SoC MediaTek Dimensity 9300+
RAM LPDDR5X 12GB
Storage UFS4.0 256GB
OS Android15(HyperOS 2)

重要なのはSoCです。MediaTekのDimensity 9300+はハイエンド向けのものなので大丈夫ですが、
世代が古かったり、廉価版だと一部のコーデックが使用できない場合があります。

そしてffmpegはTermuxで動作させます。
TermuxはAndroidでLinux環境を実行できるアプリです。
Android向けのffmpegもインストールできるので手っ取り早いです。

いざ実行

本題です。実行してみます。

実行するコマンドは以下の通り。

ffmpeg -i sample.mkv -c:v hevc_mediacodec -c:a copy output.mp4

という非常に簡素なものですが、テストですから。

image.png

ちと見にくいですが、エンコードできています。
速度は…
image.png
4.65倍!

VideoToolboxは8倍、NVENCは17倍くらい出るので比較すると悲惨ですけれど、スマホでこれならいいでしょ!

libx265 vs hevc_mediacodec

ソフトウェアエンコードのlibx265とハードウェアエンコードのhevc_mediacodecを比較します。

計測方法

time ffmpeg ...

のようにtimeコマンドで所要時間を計測、ffmpegでは-tオプションをつけ冒頭1分のみエンコードを行う。
ちょっとガバいけど、許してちょ!!

結果

libx265 : speed=1.09x / 所要時間 55秒
hevc_mediacodec : speed=4.93x / 所要時間 12秒

なお、画質については触れないものとする。

所感

軽く触ってみただけですが、とりあえずハードウェアエンコードできるんだぁ…って思いました。
速度に関しては必要十分、画質は…オプションを練れば良くなるでしょう!

発熱は私の機種ではほとんどなく、エンコード中にYouTubeを見ていてももっさり感はありませんでした。

おまけ: メインPCと対決()

メインPCはRyzen 7 5700XにRTX 4060 Tiなのでスマホみたいな雑魚が勝てるわけありませんが…

なおWindowsのためtimeはありません。速度だけ。

libx265 : speed=4.06x
hevc_nvenc : speed=32.7x

圧倒ですね。比べるほうが悪い。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?