HHR’s diary

日記は無理でも週記…いや、月記でがんばろう。

IDCFのキャンペーンに乗っかってCPU16コアでx264動画エンコード

去年の年末らへんにIDCFの新規入会キャンペーンみたいの(またやっている)でサーバ作ったんですけど、ちょっとだけ使ってHerokuに移行、その後は放置していました。
無料枠がまだ7000円分ほど残っていて、有効期限が5月だったのでもったいないなー、と思って日々ネタ探しをしていたのですが、ふと、昔に撮ったmpeg動画の圧縮をやろうやろうとして忘れていたのを思い出しました。

実はffmpegは2年ちょっと前にさわったことがあり、四苦八苦してコンパイルまでしていざエンコードしたら1時間弱の動画のエンコードに30時間かかったりといろいろ力不足(僕自身もマシンも)感に苛まれました。(当時の環境は2コアの2.4GHzぐらい)
また、こんな記事を読んだりして、すっかり熱が冷めちゃいました。
そんなこんなで、コンパイルの仕方と一応のエンコード方法がわかって満足かなーっと、ほったらかしにしていました。

話を戻しまして、IDCFのリソース構成を見てみますと、2.6GHzのCPU16コア(152円/時)があって、2年ちょっと前のローカルマシン環境から大幅スペックアップを発見しました。
単純計算ですが、8倍以上のパフォーマンス! と意気込んで再チャレンジしてみました。

ffmpegの最新情報だけは追っかけていて、公式コンパイル方法とか公式エンコード方法とかブックマークしてあったので、それを試したいという気持ちもそこそこ。

コンパイルエンコードはほぼ記事通りに行ったので割愛して、期待の性能なんですが…
すごいですねー。
1時間弱の動画のエンコードが2時間程度で終わりました。

CPU16コアの top も圧巻。

ffmpeg -i in.mpg -c:v libx264 -preset veryslow -crf 18 -c:a libfdk_aac -b:a 128k -movflags +faststart out.mkv
Tasks: 331 total,   1 running, 330 sleeping,   0 stopped,   0 zombie
%Cpu0  :  1.1 us,  0.4 sy, 95.4 ni,  3.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.4 us,  0.0 sy, 98.9 ni,  0.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  6.2 us,  0.0 sy, 80.3 ni, 13.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  6.0 us,  0.4 sy, 90.8 ni,  2.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :  7.4 us,  0.4 sy, 88.7 ni,  3.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  : 10.7 us,  0.3 sy, 83.4 ni,  5.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :  4.2 us,  0.0 sy, 92.2 ni,  3.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :  6.0 us,  0.7 sy, 89.8 ni,  3.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu8  : 11.1 us,  0.3 sy, 84.1 ni,  4.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu9  :  2.8 us,  0.0 sy, 95.1 ni,  2.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu10 :  7.6 us,  0.3 sy, 85.4 ni,  6.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu11 :  9.1 us,  0.4 sy, 85.6 ni,  4.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu12 :  0.0 us,  0.0 sy, 99.3 ni,  0.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu13 :  4.7 us,  0.7 sy, 85.1 ni,  9.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu14 :  4.2 us,  0.0 sy, 93.7 ni,  2.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu15 :  2.5 us,  0.0 sy, 95.4 ni,  2.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

どやっ

元記事が手元に無くてうろ覚えなんですけど、クラウドの可能性みたいな題目でNew York Timesがハイスペックリソースをクラウドで調達して記事の電子化(少し記憶が曖昧)をサクッと処理。というのを思い出しました。
当時は「へぇー」程度だったんですが、実際に個人でクラウドのハイスペックリソースを借りてCPU依存の処理をしてみて、ありかもなぁ。とか思いました。
CPU依存の処理を個人が必要とするシーンがあまり思いつかないのですが…

因みにですが、このブログ書いていたらffmpegバージョンアップしました。 NVIDIAのH.264ハードウェアエンコーダーかぁ…

remarkをブログに埋め込む

markdownでプレゼン資料が作れるremarkを使ってみましたが、公開する場面になってブログに埋め込むことができないことに気づきました…
一応remarkが利用するdiv.remark-slides-areaを設置してやればスライド表示はできるんですが、マウススクロール、jk↓↑←→スペースなどのイベントがページ全体に作用してしまい残念な感じになります。
remarkは1つのwebページと一対一であること前提で作られているようですね。

ということで四苦八苦していたのですが、うまくやる方法が思いつかなかったのでiframe使いました。

どなたか良い方法(代替手段でも)を教えて下さい…

眠っているiPhoneの活用

12/13のやつです。

スライド中ではgitのバージョンが古いと記載してありますが、その後バージョンアップされて新しくなりました。

 

chromesafariで動作確認

クリックで進む。右クリックで戻る。