Windows 10のUbuntuアプリ18.04でFFmpegをビルドする
改めてWindows 10でFFmpegをビルドする方法をまとめました。
Windows Subsystem for LinuxのUbuntuを使ってWindows用FFmpegをビルドします。
この記事公開時でのUbuntuのバージョンは18.04です。
以前にもWindowsでFFmpegをビルドする手順を説明しました。
関連記事:Windows用FFmpegをWindows 10でビルドする (Bash on Ubuntu on Windows)
このころと手順は同じですが、Ubuntuのバージョンが変わりいろいろ問題が生じています。
関連記事:久しぶりにFFmpegのビルドに成功した
そこで、この記事公開時でのWSL環境でビルドする手順を確認してみました。
Bash on Ubuntu on WindowsはWindows Subsystem for Linux(WSL)と呼ばれるようになりました。Ubuntuの名前が無くなりより汎用的なイメージです。
WSL上でLinuxの一つとしてUbuntuが動きます。
Ubuntuのバージョンは18.04.1になっています。
WSLを使えるようにする所からビルド完了までをビデオにしました。ご自身で試す前のイメージトレーニングにどうぞ。
チャンネル登録もお願いします。
コントロールパネルの「windowsの機能の有効化または無効化」を開きます。
Windows 10では辿り着くのが面倒になってしまいました。
タスクバーの検索バーに
チェックしOKを押すと再起動を促されます。再起動します。
何個か似たようなのが出てきますが、"Ubuntu"とだけ書かれたものでいいです。最新リリースが使えます。
この記事公開時ではバージョン18.04です。
最初に数分間待たされます。Ubuntuの環境を作っているようです。
Ubuntuのユーザーを最初に登録します。このユーザーはWindowsとは関係ないユーザーになります。Ubuntuだけのユーザーです。
ビデオでは"user1"としました。
そしてパスワードを設定します。このパスワードはUbuntuの管理者権限を使うのに必要になります。
これでUbuntuを使えるようになりました。
始めはuser1のホームディレクトリでターミナル画面が動きます。
UbuntuなどLinuxのOSはバージョンが異なるとめんどくさい事がたくさん起きます。Webなどにある手順を真似る時は自分の使っているバージョンと同じかどうか確かめましょう。
Linuxは多数のライブラリで動いており、そのライブラリは日々更新されます。複数のライブラリが連携して動きますが、依存するライブラリでバージョンが想定と異なるとエラーで動かなくなる事が良くあります。
レポジトリを使うとできるだけ新しいライブラリバージョンの組み合わせに一括して更新する事ができます。
最新のバージョンになるわけではありません。最新のバージョンの組み合わせで動くとは限らないからです。
"Downloads"ディレクトリを作り、そこに必要なファイルを置くようにします。
ffmpeg-windows-build-helpersをダウンロードします。
よく見ると「ubuntuならこうしろ」と書いてあります。
そのまま実行します。
この記事公開時、これだけではこのメッセージから抜け出せません。まだ足りないプログラムがあるようです。スクリプトを覗くと7zipが無いようです。
次に32ビットか64ビットあるいは両方をビルドするのか聞かれます。
ビデオでは64ビットをビルドするので"3"を押しました。
今回はi7-2600kを約4.3GHzで動かしましたが、ビルドが完了するまで2時間10分ほどかかりました。
しかしそのディレクトリはUbuntuアプリ上での場所です。Windowsではどこにあるのでしょうか?
今回の場合はここがホームディレクトリになります。ユーザーフォルダ内の隠しフォルダの下にあります。
この場所はubuntuユーザーのホームフォルダが作られる場所です。
FFmpegの実行ファイルはさらに下にあります。
圧縮された再配布用ファイルは
user1\Downloads\ffmpeg-windows-build-helpers\sandbox\redist
にあります。
実行ファイル単体、今回は64ビットのファイルは
user1\Downloads\ffmpeg-windows-build-helpers\sandbox\win64\ffmpeg_git
にあります。
ffmpeg.exe,ffplay.exeとffprobe.exeがあるでしょう。
他にx264.exeとx265.exeもできています。win64下のライブラリのフォルダを開いてみましょう。
今回の難所は7zipをインストールする所でした。そのうちスクリプトの説明文が改善されるでしょう。
多くのライブラリを使うFFmpegのビルドは毎回成功するとは限りません。個々のライブラリの更新によりエラーが出る事があります。
今回のビデオを作る1日前は、あるライブラリの仕様変更でビルドに失敗していました。
修正は常に行われているのでエラーがでても数日ビルドを試せば成功する事があります。
ビルドスクリプトは最新のソースを自動的に取ってきてくれます。
2回目からの実行はクロスコンパイラをビルドしないので短い時間でビルドできるでしょう。
どうしてもおかしいと思うときはffmpeg-windows-build-helpersディレクトリ下のsandboxディレクトリを削除します。
WSLのおかげでLinuxでビルドする必要があるプログラムを簡単にビルドできるようになりました。
FFmpegは多くのライブライを使っておりライセンスなど権利関係は複雑です。この記事を参考にビルドしたファイルを商用に使ったり人に渡したりする場合はご自身の責任で行ってください。
Windows Subsystem for LinuxのUbuntuを使ってWindows用FFmpegをビルドします。
この記事公開時でのUbuntuのバージョンは18.04です。
以前にもWindowsでFFmpegをビルドする手順を説明しました。
関連記事:Windows用FFmpegをWindows 10でビルドする (Bash on Ubuntu on Windows)
このころと手順は同じですが、Ubuntuのバージョンが変わりいろいろ問題が生じています。
関連記事:久しぶりにFFmpegのビルドに成功した
そこで、この記事公開時でのWSL環境でビルドする手順を確認してみました。
Bash on Ubuntu on WindowsはWindows Subsystem for Linux(WSL)と呼ばれるようになりました。Ubuntuの名前が無くなりより汎用的なイメージです。
WSL上でLinuxの一つとしてUbuntuが動きます。
Ubuntuのバージョンは18.04.1になっています。
WSLを使えるようにする所からビルド完了までをビデオにしました。ご自身で試す前のイメージトレーニングにどうぞ。
チャンネル登録もお願いします。
FFmpegビルド手順の解説
少し解説をしておきます。Windows Subsystem for Linuxを有効にする
Windows 10でubuntuアプリを使うにはWSLを有効にする必要があります。コントロールパネルの「windowsの機能の有効化または無効化」を開きます。
Windows 10では辿り着くのが面倒になってしまいました。
タスクバーの検索バーに
optionalfeatures.exeと入れてしまうのが簡単でしょう。エクスプローラのアドレスバーに入れてもいいですし、コマンドプロンプトでももちろんいいです。
チェックしOKを押すと再起動を促されます。再起動します。
Ubuntuアプリのインストール
Ubuntuアプリをインストールします。Microsoftストアで"Ubuntu"を検索します。何個か似たようなのが出てきますが、"Ubuntu"とだけ書かれたものでいいです。最新リリースが使えます。
この記事公開時ではバージョン18.04です。
Ubuntuの初期設定
Ubuntuアプリを実行します。最初に数分間待たされます。Ubuntuの環境を作っているようです。
Ubuntuのユーザーを最初に登録します。このユーザーはWindowsとは関係ないユーザーになります。Ubuntuだけのユーザーです。
ビデオでは"user1"としました。
そしてパスワードを設定します。このパスワードはUbuntuの管理者権限を使うのに必要になります。
これでUbuntuを使えるようになりました。
始めはuser1のホームディレクトリでターミナル画面が動きます。
Ubuntuバージョンの確認
Ubuntuアプリのバージョンを確認します。UbuntuなどLinuxのOSはバージョンが異なるとめんどくさい事がたくさん起きます。Webなどにある手順を真似る時は自分の使っているバージョンと同じかどうか確かめましょう。
$ uname -a Linux xxxx 4.4.0-17134-Microsoft #285-Microsoft Thu Aug 30 17:31:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionicちなみにUbuntuの最新バージョンへアップデートするには
do-release-upgradeとコマンドを入れます。
レポジトリ更新
Linuxの多くはレポジトリと言われる方法でいろいろなプログラムやライブラリをパッケージにして簡単にインストール/削除できるようになっています。Linuxは多数のライブラリで動いており、そのライブラリは日々更新されます。複数のライブラリが連携して動きますが、依存するライブラリでバージョンが想定と異なるとエラーで動かなくなる事が良くあります。
レポジトリを使うとできるだけ新しいライブラリバージョンの組み合わせに一括して更新する事ができます。
最新のバージョンになるわけではありません。最新のバージョンの組み合わせで動くとは限らないからです。
レポジトリupdate
レポジトリデータベースを最新の状態にします。sudo apt update
ライブラリの更新
レポジトリデータベースに基づきパッケージを最新の状態にします。sudo apt upgrade
ビルド用ディレクトリの作成
Ubuntuアプリの初期状態ではホームディレクトリにファイルもサブディレクトリも無いようです。これでは不便そうなのでFFmpegをビルドするディレクトリを用意します。"Downloads"ディレクトリを作り、そこに必要なファイルを置くようにします。
mkdir Downloads cd Downloads
ffmpeg-windows-build-helpersのダウンロード
今回は"ffmpeg-windows-build-helpers"を使ってFFmpegをビルドします。ffmpeg-windows-build-helpersをダウンロードします。
git clone https://github.com/rdp/ffmpeg-windows-build-helpers.git cd ffmpeg-windows-build-helpers
ビルドに必要なライブラリパッケージのインストール
ビルドスクリプトを実行します。./cross_compile_ffmpeg.sh何やら英文が出て終わるでしょう。
Could not find the following execs (svn is actually package subversion, makeinfo is actually package texinfo, hg is actually package mercurial if you're missing them): 7z
Install the missing packages before running this script.
for ubuntu: $ sudo apt-get install subversion curl texinfo g++ bison flex cvs yasm automake libtool autoconf gcc cmake git make pkg-config zlib1g-dev mercurial unzip pax nasm gperf autogen bzip2 autoconf-archive -y
for gentoo (a non ubuntu distro): same as above, but no g++, no gcc, git is dev-vcs/git, zlib1g-dev is zlib, pkg-config is dev-util/pkgconfig, add ed...
for OS X (homebrew): brew install wget cvs hg yasm autogen automake autoconf cmake libtool xz pkg-config nasm bzip2 autoconf-archive p7zip
for debian: same as ubuntu, but also add libtool-bin and ed
for RHEL/CentOS: First ensure you have epel repos available, then run $ sudo yum install subversion texinfo mercurial libtool autogen gperf nasm patch unzip pax ed gcc-c++ bison flex yasm automake autoconf gcc zlib-devel cvs bzip2 cmake3 -y
for fedora: if your distribution comes with a modern version of cmake then use the same as RHEL/CentOS but replace cmake3 with cmake.
for linux native: libva-dev
必要な実行ファイルが無いと言われます。よく見ると「ubuntuならこうしろ」と書いてあります。
そのまま実行します。
sudo apt-get install subversion curl texinfo g++ bison flex cvs yasm automake libtool autoconf gcc cmake git make pkg-config zlib1g-dev mercurial unzip pax nasm gperf autogen bzip2 autoconf-archive -y
この記事公開時、これだけではこのメッセージから抜け出せません。まだ足りないプログラムがあるようです。スクリプトを覗くと7zipが無いようです。
sudo apt-get install p7zip-full
ビルドスクリプトの実行
再び./cross_compile_ffmpeg.sh今度は動くでしょう。
次に32ビットか64ビットあるいは両方をビルドするのか聞かれます。
ビデオでは64ビットをビルドするので"3"を押しました。
今回はi7-2600kを約4.3GHzで動かしましたが、ビルドが完了するまで2時間10分ほどかかりました。
ビルドしたファイルの場所
ビルドが完了したらビルドしたファイルがどこにあるか表示されます。しかしそのディレクトリはUbuntuアプリ上での場所です。Windowsではどこにあるのでしょうか?
今回の場合はここがホームディレクトリになります。ユーザーフォルダ内の隠しフォルダの下にあります。
C:\Users\[ユーザー名]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\homeこのパスが誰でも同じなのか良くわかりません。Ubuntuを入れた時期により変わるかも?
この場所はubuntuユーザーのホームフォルダが作られる場所です。
FFmpegの実行ファイルはさらに下にあります。
圧縮された再配布用ファイルは
user1\Downloads\ffmpeg-windows-build-helpers\sandbox\redist
にあります。
実行ファイル単体、今回は64ビットのファイルは
user1\Downloads\ffmpeg-windows-build-helpers\sandbox\win64\ffmpeg_git
にあります。
ffmpeg.exe,ffplay.exeとffprobe.exeがあるでしょう。
他にx264.exeとx265.exeもできています。win64下のライブラリのフォルダを開いてみましょう。
まとめ
WSLのUbuntu 18.04でFFmpegをビルドできました。ビルドにはffmpeg-windows-build-helpersを使いました。今回の難所は7zipをインストールする所でした。そのうちスクリプトの説明文が改善されるでしょう。
多くのライブラリを使うFFmpegのビルドは毎回成功するとは限りません。個々のライブラリの更新によりエラーが出る事があります。
今回のビデオを作る1日前は、あるライブラリの仕様変更でビルドに失敗していました。
修正は常に行われているのでエラーがでても数日ビルドを試せば成功する事があります。
ビルドスクリプトは最新のソースを自動的に取ってきてくれます。
2回目からの実行はクロスコンパイラをビルドしないので短い時間でビルドできるでしょう。
どうしてもおかしいと思うときはffmpeg-windows-build-helpersディレクトリ下のsandboxディレクトリを削除します。
rm -rf sandbox
WSLのおかげでLinuxでビルドする必要があるプログラムを簡単にビルドできるようになりました。
FFmpegは多くのライブライを使っておりライセンスなど権利関係は複雑です。この記事を参考にビルドしたファイルを商用に使ったり人に渡したりする場合はご自身の責任で行ってください。
コメント
コメントを投稿