ArchLinuxでx265を試してみた
前回の続きです
前回はffmpegに組み込まれたx265でエンコードしてみましたが
今回はソースコードからx265をビルドして試してみます
まずはx265の準備から
ArchLinuxならリポジトリにあるのでそのままpacmanでインストール出来ます
# pacman -S x265
結構頻繁に更新してくれてるので、そのまま配布されたバイナリでも特に問題無いと思います
が、自分でビルドがしたいんや!!とか言う人もいるでしょう
今回はソースコードを取得してビルドする事にします
一応AURの方にはx265-10bitとかx265-hgもあるのでお好きなのをどうぞ
基本的にビルドの仕方はWikiにプラットフォーム別に分けて書いてあります
WikiではUbuntuが例としてありますが、Archでも必要なパッケージは同じです
ソースコードを取得するのに必要なmercurial,ビルドするのにcmake,yasm等
このページを見てるような人ならすでにインストール済みでしょう(たぶん)
あとはWikiに書いてある通りにコマンドうつだけです
$ hg clone https://bitbucket.org/multicoreware/x265 $ cd x265/build/linux $ ./make-Makefiles.bash $ make
デフォルトだと8bppが作成されます。もし16bppバイナリを作成したい方はHIGH_BIT_DEPTHの部分をONにして下さい
makeが完了したらx265のバイナリが出来てるので後はご自由に
さて、無事にx265を使う準備が出来ました。実際にエンコードしてみましょう
今回も素材は某ムービーを使用
まず前提として、現在x265の入力ファイルはrawかy4m,出力ファイルはrawしか出来ません
そこでまずx265にファイルを食わす為に、素材の映像をy4mに変換します
しかしそのままy4mで出力してしまうと無駄なので、ffmpegからパイプを使ってx265に渡しましょう
$ ffmpeg -i hoge.mpg -an -f yuv4mpegpipe - | x265 --y4m --input-res 1280x720 --fps 30 --crf 20 - -o hogehoge.hevc
こんな感じですね
エンコードが終了してhogehoge.hevcというファイルが出来ていれば成功かと思います
試しにmpv等で再生してみて確認してみましょう
後は音声ですが、前回と同じくffmpegからfdk_aacを使って作成(前回やったので省略)
そして映像を音声をmuxさせます
(fpsは素材に合わせて指定して下さい。今回は30pの素材だったので30で指定)
MP4Boxを使う場合
$ MP4Box -add hogehoge.hevc:fps=30 -add hogehoge.aac -new hogehoge.mp4
L-SMASHを使う場合
$ muxer -i hogehoge.hevc?fps=30 -i hogehoge.aac -o hogehoge.mp4
MP4BoxもL-SMASHも最近のrevならHEVC対応しているはずです
muxしたファイルを再生してみて確認してみましょう
上手く出来てたらおめでとうございます(パチパチパチ)
最後にここまで書いておいてアレですが、今回のやり方は音ズレ等についてまったく考慮してません
(ならこんな記事書くなよというツッコミは)
今回MP4Boxでmuxした場合、元ファイルよりわずかに映像と音声にズレがみられました
数年前にも原因を調べた気がするんだけどすっかり忘れてる…
自分が音ズレについて理解しないといけないのが先ですなぁ…