LoginSignup
1

More than 5 years have passed since last update.

GoogleがShakaPackagerのWin用バイナリを配布してくれないので自分でビルドする話。俺、このビルドが成功したら有給取るんだ・・・

Posted at

困ったことに

未だ、ネクストスケープ配信事業本部 Advent Calendar 2016 に空いている日がある・・・
前回と同じく、これはそんな空き日を埋める小ネタの話。
今回もまた、恐らく大半以上の人にとって知る必要のない小ネタです。

そもそもShakaPackagerとは?

GoogleがGithubで公開している、MPEG-DASHのパッケージャです。
https://github.com/google/shaka-packager
mp4ファイルをMPEG-DASHで配信できるフォーマットに変換するツール、と言うと分かりやすいでしょうか。
パッケージングだけでなく、WidevineDRMで暗号化出来たり、mp4からApple HLSの作成も出来たりします。
専門的になりますが、暗号化の際にAES-CBCモードが使えたりして何気に最先端です。

そんなShakaPackagerですが

何故か、Windows用のバイナリが配布されていません。Linux用とMacOSX用のバイナリしか配布されていません。
READMEとか読むと、Dockerでやれば?、みたいな事が書いてあります。

と言う事で自分でビルドしてみます

  1. 何はなくとも、コンパイラーとかリンカーが必要なのでVisualStudioをインストールします
    https://www.visualstudio.com/ja/downloads/
    ここからCommunity Editionをダウンロードして、インストールの際にC++の環境を忘れずにチェックしてインストールします。
     

  2. ShakaPackagerをビルドするディレクトリを適当に、C:\shaka\srcとかに決めます
     

  3. C:\shakaにGoogleのビルド用ツールのdepot_toolsをダウンロードします

cd c:\shaka
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git .\depot_tools\

 
4. c:\shaka\srcをgithubのリポジトリに設定します

depot_tools\gclient config https://github.com/google/shaka-packager.git --name=src --unmanaged

 
5. ここでちょっと一息
ビルドするのは、x86向けですか?それともx64向けですか?
もしもx64向けにビルドする場合は、

set GYP_DEFINES=target_arch=x64

の環境変数設定が必要です。尚、x64向けのビルドは色々と下ごしらえが面倒なので、ここではx86用のビルドを前提に話を進めます。
x86向けにビルドするのなら

set GYP_DEFINES=target_arch=x86

になりますが、この設定はしなくてもx86用のビルド設定は勝手にされるので、する必要はないと思います。
 
6. ソースファイルを同期する

depot_tools\gclient sync

 
7. ここでまた一息
どうも日本語環境でビルドしようとすると、ビルドの途中でコケるのでOSの言語設定を英語にします。
自分はWin7しか環境が無いので、Win7の場合だと

0_area_lang_control.jpg

ここで

1_locale_us.jpg

こんな風にシステムロケールを変更します。
 
8. ビルドする
リリースビルドをするのなら

cd src
..\depot_tools\ninja -C "out\Release" -k 100

デバッグビルドをするのなら

cd src
..\depot_tools\ninja -C "out\Debug" -k 100

です。

x64用ビルドの際は

cd src
..\depot_tools\ninja -C "out\Release_x64" -k 100
..\depot_tools\ninja -C "out\Debug_x64" -k 100

みたいなコマンドでビルドするのですが、大量のエラー扱いされるワーニングが出てコンパイルが通らないので、
out\Release_X64
out\Debug_x64
の配下の *.ninja ファイル内の cflags に設定してある /WX を /WX- に変えておいた方が良いと思います。

それから、どうも gclient は gclient sync の際に環境変数を見て、x86向けとx64向けのソースファイルを取り分けている様なので
x86向けとx64向けのソースは分けて置いたほうが良いかなあ、とか思います。

と、ここまで書いておいて何ですが

https://ci.appveyor.com/project/shaka/shaka-packager
で自動ビルドがされていて、packager.exeだけが欲しいなら、ここからダウンロードした方が早いです。(笑)

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
1