質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

1回答

3507閲覧

ffmpeg でUnknown encoder 'libx264'エラー

lyzmfeqpxs54

総合スコア237

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0グッド

2クリップ

投稿2019/03/09 06:39

いつもお世話になっております。

現在Railsでwebページを作成しております。
環境はAmazonLinux2で、ffmpegはインストール済みです。
ページにて動画をH.264でエンコードをする必要があるため、オプションでlibx264を指定しているですが
Unknown encoder 'libx264'が出てしまいます。

下記のようにx264は入れ、ffmpegを再ビルドいるつもりなのですが、どのようなことが考えられますでしょうか。
/usr/local/bin/直下にffmpegとx264は存在しております。
ご教示いただけますと幸いです。
よろしくお願いいたします。

$ git clone git://git.videolan.org/x264
$ cd x264
$ ./configure --enable-shared
$ make
$ make install

$ cd ffmpeg
$ ./configure --enable-gpl --enable-libx264 --enable-nonfree

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Stan_Dma

2019/03/09 07:52

What is your $PKG_CONFIG_PATH? It seems that libx264 libraries could not be found by ffmpeg building stage because of lack of /usr/local/lib/pkgconfig directory from the directories that pkg-config be aware of. How about if you define PKG_CONFIG_PATH locally, for example, export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH. After that you may build ffmpeg with libx264 to be found.
guest

回答1

0

ご提示いただいたコマンドには不可解な点がいくつかあります。

まず、x264はffmpeg以外でも利用する可能性があって、--enable-sharedを付けているのでしょうか?また、--prefixをつけていないため、インストール先はデフォルト(/usr/localなのかな?)になりますが、それだとユーザー権限のままmake installを実行しても書き込み権限がないために失敗するでしょう。それなのに、/usr/local/binにx264が存在すると記されているのですが、そのx264はどこから出てきたものなのでしょうか。これはffmpegについても言えます。

ffmpegのビルドについても、Stan_Dmaさんがコメントされている通り、環境変数PKG_CONFIG_PATHによって、(成功しているなら)先にインストールしたx264による情報が存在するpkgconfigへのパス(prefix無指定インストールなら/usr/local/lib/pkgconfig)を指定する必要があります。それが抜けている状態でffmpegをビルドしても正常に通るのかすらわかりませんし、通ってもlibx264を参照することはできないでしょう。

また、Amazon Linux2はよく知らないのですが、これは「元々導入されているx264やffmpegを上書きする」意図を持った作業なのでしょうか?もしそうであった場合、パッケージ管理システムなどの管理上破綻しない形で導入しないと、後で困ることになるかもしれません。

そうした他の管理システムやライブラリーとの干渉を意識せずに済むように、ファイルサイズは少し大きくなる代わりに他のプログラムやライブラリーを参照しないスタティックなffmpegをビルドしてみてはどうでしょうか。下記に記した例では、ホーム直下にMyFFmpegという作業ディレクトリーを作成して、その中でffmpegのビルドまで全て完結するようにしているつもりです。

bash

1$ cd 2$ mkdir MyFFmpeg 3$ cd MyFFmpeg 4$ git clone git://git.videolan.org/x264 5$ cd x264 6$ git checkout stable 7$ ./configure --prefix="$HOME/MyFFmpeg/build" --enable-pic --enable-static 8$ make 9$ make install 10$ cd .. 11$ git clone https://github.com/FFmpeg/FFmpeg.git 12$ cd FFmpeg 13$ git checkout refs/tags/n4.1.1 14$ PKG_CONFIG_PATH="$HOME/MyFFmpeg/build/lib/pkgconfig" ./configure --prefix="$HOME/MyFFmpeg/build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/MyFFmpeg/build/include" --extra-ldflags="-L$HOME/MyFFmpeg/build/lib" --extra-libs="-lpthread" --enable-gpl --disable-shared --enable-static --enable-libx264 15$ make 16$ make install

これで作業完了すると、$HOME/MyFFmpeg/build/bin/の下にffmpegというファイルが出力されているはずです。このファイル1つで単独動作するものなので、これをどこか任意の場所にコピーして用いれば、libx264によるエンコードやデコードもできるようになっているはずです。

投稿2019/03/17 07:35

編集2019/03/20 12:26
keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2019/03/17 08:51 編集

fdk-aacのようなnon-freeなライブラリーを加えるわけではないなら、--enable-nonfreeはいらないですね。意味を理解せずオプションを付けるというのは、よくない結果を招く一番の原因になるんじゃないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問