eingusteのblog

Windows向けFFmpegバイナリを個人的にビルド(コンパイル)してます。その更新情報など。

カテゴリ: お知らせ

昨日、少しだけですがFFmpegに必要なライブラリの再構築を行いました。
お知らせしたとおり、コンパイラ(ビルド環境)を変更しましたので、32bit版、64bit版ともに一通りビルドしなおし中です。
zlib-1.2.8	OK
bzip2-1.0.6	OK
GMP-6.1.0	OK
nettle-3.2	OK
libtasn1-4.8	OK
GnuTLS 3.4.13	OK
x264		OK
x265		OK
libiconv-1.14	OK
以上、です。

皆さま、こんばんは。お久しぶりでございます。
おかげさまで gcc-6.1.0 with mingw-w64-v4.0.6 がビルドできました。
ビルドの際、活用させていただいたのが、MSYS2Alexpux/MINGW-packagesの存在です。
MSYS2のi686、x86_64向けのパッケージを作成するためのスクリプトやパッチがたくさんあり、非常に参考になりました。ここがなかったら自力ではビルドできなかったかも知れません。大感謝です。
ここのスクリプトや設定ファイルを調整しながら、我流ではありますが、makepkgコマンドと沢山のパッチの恩恵を受けて、無事ビルドすることができました。そしてここを参考にしてbinutilsは2.26にせず、2.25.1を利用することにしました。MSYS2に合わせた感じです。
また全体のビルドの流れについては、mingw-buildsのビルド情報(build-info.txt)が、ビルド手順の想定ができて大変参考になりました。本当にありがとうございます。

なんとかGCC-6.1をビルドできたところで、FFmpegや必要なライブラリをビルドしてみたところ、いくつかの問題に遭遇しました。pthreadを無効にするため、ヘッダをリネームしたはずなのにヘッダが検出されてたり、ちょっと謎でした。ソースを修正すれば無効にできるのでそれで対応しましたが、そのまますんなりとはいかない感じでした。GCCシリーズとしては新しいものですし、変更点も多く、デフォルトオプションの変更もあるだろうし、当然といえば当然です。
チャレンジ精神を燃やしつつ、コンパイルオプションをいろいろ試しては、make checkなどで各ライブラリの動作を確認したりと、そんな感じでやっておりました。ただ自力では解決できない問題があったので、結局 gcc-6-branch を追っかけて、そちらも試していました。
そんな日々を送っていたところ、GCC 5.4がリリースされたではありませんか!!!。しかもGCC 5.3関連のバグフィックスリリースの様子です。
続きを読む

皆さん、しばし放置気味の当サイトにアクセスしてくださいまして、ありがとうございます。
先日お知らせしたとおり、ビルド環境はMSYS2に移行しています。(Mingw-buildsのgcc-5.3.0でビルドできる環境になっています。)

ただ前からBinutilsGMPMPFR、そしてMingw-w64などのバージョンを更新したいなと考えていました。
そして近頃、gcc-6.1.0がリリースされたことですので、gcc-6.1.0 with mingw-w64-v4.0.6をビルドすることにしました。(スレッドタイプはwin32にするつもりです。)

gcc-6-branchにするか、gcc-6.1.0にするかは悩みどころなのですが、いったんgcc-6.1.0を構築中です。とはいっても、ほとんどスクリプト任せなので微調整が済めば、あとは古めのPC君が、CPUをフル回転させて、頑張ってくれることでしょう。(^^;;;
PC君が壊れませんように(^^;;;
GCC Bugzilla – Bug Listをチェックしつつ、必要そうだったら gcc-6-branch のビルドに切り替えるかもしれません。

また mingw-w64 も v4.0.6 ではなく、 v4.x または master ブランチをビルドするほうが良いのかも知れません。各ブランチのコミットを見ると、Windows10への対応などもあるようですから。
ただとりあえずは、リリース版を使って環境を構築していく予定です。

なおFFmpegは、最近、あまり利用していないので、のんびりやっております。
FFmpegのビルドは少し先になるかと思いますが、Zeranoe FFmpeg という大きな存在がありますので問題ないですよね。

お知らせ、近況報告は以上です。では、またお会いしましょう。(^^)/~~

Fmpeg:git版(2016-04-16) にて下記のようにお知らせした件の続報です。
2016-04-24追記
32bit版でlibxvidを利用するとffmpeg、ffplayがSEGVすることが判明しました。
なぜかMSYSの起動の仕方で、SEGVしないでエンコードできていたため、発見が遅れました。
コマンドプロンプトや、通常のBashシェルでログインして、試したところ、判明した次第です。
このSEGVは、4月5日のあるコミットの影響なのですが、最適化を行わない(-O0)とSEGVしないこともわかりました。そこでコンパイルオプションを調整して、動作確認をすることといたしました。
これ以降については、確認環境を変更しますので、大丈夫かと思います。


ようやく時間がとれて、FFmpeg側の最適化オプションを調整しています。
64bit版でも、クラッシュはしないものの、最適化オプションによっては、エンコード中にエラーを吐いていました。
調整が終わり次第、新しいバージョンのビルドを行いたいと思います。

続きを読む

クリーンインストールやら、いろいろ試したので、ついでにFFmpegのビルド環境も変更してみようと思いたちました。
ベースを現在のMSYS(mignw)からMSYS2に移行して、FFmpegやその関係のライブラリはmingw-w64を利用してビルドしようというものです。
MSYS2のmingw-w64を利用してもいいですよね。でもスレッドがPOSIXというところが引っかかって。より機能は良いようですけど。
今回は今まで通り、mingw-buildsのGCCを利用することにしました。
x86、x86_64の両方が配布されていますので、win32のスレッドで、x86は例外処理dwarfx86_64はsehを利用することにしました。

外部ライブラリも一通り、ビルドできたので、後はFFmpeg本体のビルドができるか確認しているところです。
今後は、こちらの環境でビルドしたものをアップしたいと思います。
以上

↑このページのトップヘ