linuxインストールffmpeg

12324 ワード


本文はlinuxの下で、どのようにそれぞれ直接バイナリファイルをダウンロードすることと、自分でソースコードをコンパイルすることの2つの方法でffmpegをインストールするかを説明します.
インストール時に発生するいくつかの問題やエラーは、漁獲を教えるために拡張されます.
方式1、直接バイナリファイルをダウンロードする
ffmpegは現在、静的コンパイルバージョンのバイナリ実行可能ファイルを提供しており、直接ダウンロードして使用することができます.
含まれるファイルにはffmpegとffprobeがあり、libav*などのffmpegのライブラリは含まれていません.
このインストール方式はffmpegコマンドラインツールを直接使用するシーンに比較的実用的である.
アクセス https://johnvansickle.com/ffmpeg/ このページでは、最新の安定バージョンを取得します.
△このページには最新の安定バージョンも含まれており、git masterの最新バージョンも含まれています.個人的には安定バージョンのほうがいいと思います.安定しています.
この文章を書くとき、最新の安定版はrelease: 4.2.2です.
普通のlinuxサーバー、このファイルをダウンロードします:ffmpeg-release-i686-static.tar.xzバイナリファイルの情報にアクセス可能 https://johnvansickle.com/ffmpeg/release-readme.txt このページは取得して、羅列したのはやはり比較的に詳しいです.
以下はインストールプロセスです.簡単な概要は2つのステップで、ダウンロード、解凍、使用します.
1
2
3
4
5
6
7
8
9
10
11
12
#      
$wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-i686-static.tar.xz
#      md5  
$wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-i686-static.tar.xz.md5
#       md5    ,      
$md5sum -c ffmpeg-release-i686-static.tar.xz.md5
#   
$tar xvf ffmpeg-release-i686-static.tar.xz
#   
$./ffmpeg-4.2.2-i686-static/ffmpeg
#      ,   ffmpeg     bin   
$mv ffmpeg-4.2.2-i686-static/ffmpeg ffmpeg-4.2.2-i686-static/ffprobe /usr/local/bin/

FAQ 1.linuxカーネルバージョンが低すぎたらどうする?
例えば、私は1台のテスト機で、ダウンロードしたバイナリffmpegを実行して、エラーを報告しました.
1
2
3
$./ffmpeg-4.2.2-i686-static/ffmpeg
FATAL: kernel too old
Aborted

実際には https://johnvansickle.com/ffmpeg/ このダウンロードページには、現在コンパイルされているffmpegバイナリバージョンでサポートされているlinuxカーネルの最低バージョンも明記されており、この文章を書くときは>= 3.2.0に対応しています.私たちは https://pengrl.com/p/20026/ このページに記載されている方法は、私のテスターのカーネルバージョンを表示します.2.6.32で、確かに要求されたバージョンを下回っています.
この場合、古いバージョンの実行可能ファイルをダウンロードするか、ソースコードを選択して自分でコンパイルしてインストールするかの2つの選択肢があります.
まず古いバージョンについて話します. https://www.johnvansickle.com/ffmpeg/old-releases/ このページにはいくつかのコンパイルされた古いバージョンが羅列されていますが、ピットのお父さんは私が各バージョンに対応するカーネルバージョンの要求を見つけられませんでした.そこで、メインバージョン番号3の試しを探しました.対応する情報:
1
2
#    ,      ,  
ffmpeg-3.3.4-64bit-static.tar.xz           2017-09-13 01:21   18M

上のインストール方法でもう一度やり直します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$wget https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-3.3.4-64bit-static.tar.xz
$wget https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-3.3.4-64bit-static.tar.xz.md5
$md5sum -c ffmpeg-3.3.4-64bit-static.tar.xz.md5
$tar xvf ffmpeg-3.3.4-64bit-static.tar.xz
$./ffmpeg-3.3.4-64bit-static/ffmpeg
ffmpeg version 3.3.4-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.4.0 (Debian 6.4.0-4) 20170820
  configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

正常に使用されていることがわかります.
方式二、ソースコードの自己コンパイルインストール
△ローリーを見たくないなら、文章の最後に飛び込んで書いたシナリオをそのまま持って使うことができます.
ソースコードのインストールとバイナリのインストールの最大の違いは、ffmpegのlibav*の一連のライブラリを得ることです.どのようにこれらのライブラリに基づいて開発する必要があるかは、基本的にはソースコードのインストールしかできません.また、ffmpegのソースコードまたはそれに依存するサードパーティライブラリのソースコードをカスタマイズする必要がある場合は、ソースコードのインストールも必要です.
私の環境はアリクラウドのクラウドホストで、システムはCentOS 6.5で、linuxカーネルバージョンは2.6.32で、gccバージョンは4.4.7 20120313 (Red Hat 4.4.7-23)です.
上 http://www.ffmpeg.org/download.html このページでは、最新の安定バージョンのffmpegソースをダウンロードします.
1
2
3
4
$wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
$tar xvf ffmpeg-4.2.2.tar.bz2
$cd ffmpeg-4.2.2
$./configure

エラー:
1
2
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
...

yasmはアセンブリのために最適化されたライブラリと理解できるので、--disable-x86asmを簡単に無効にするのではなく、yasmをインストールすることを選択しました.
上 http://www.tortall.net/projects/yasm/releases/ このホームページはyasmのソースコードを探してダウンロードします:
1
2
3
4
5
6
$wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
$tar xvf yasm-1.3.0.tar.gz
$cd yasm-1.3.0/
$./configure
$make
$make install

成功したらffmpegのソースディレクトリに戻ります.
1
2
3
$cd ffmpeg-4.2.2
$./configure
$make

コンパイルが完了したらffmpegを実行してみます.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$./ffmpeg

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
  configuration:
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

しかし、このようにコンパイルされたffmpegには、h 264のような多くのコーデックが欠けていることに注意してください.
これは、ffmpegでh 264で符号化されたmp 4ファイルをflvファイルに変換し、中の符号化データを変更しないことを意味します.これはokです.外層パッケージフォーマットの変換だけですが、h 264の符号化と復号に関連すると、盲目になる可能性があります.ここでは例にならない.
では、どのように必要なライブラリを追加するかは、実は簡単です.基本的には2つのステップで、ソースコードに必要なコーデックライブラリをインストールしてから、ffmpegをコンパイルして./configureを実行するときにライブラリを追加します.
configureのすべてのパラメータの説明は./configure -hで表示できます.
本稿の方式1では、ダウンロードしたバイナリffmpegを直接実行し、1行の情報があります.configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
これがこのffmpeg当時./configureのパラメータです.x 264のライブラリ--enable-libx264が含まれていることがわかります.
x 264を含むffmpegをコンパイルする方法を説明します.
まず、コンパイルx 264:
1
2
3
4
$wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
$tar xvf x264-master.tar.bz2
$cd x264-master/
$./configure

エラー:
1
2
3
Found no assembler
Minimum version is nasm-2.13
If you really want to compile without asm, configure with --disable-asm.

インストールnasm:
1
2
3
4
5
6
$wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
$tar xvf nasm-2.14.02.tar.gz
$cd nasm-2.14.02/
$./configure
$make
$make install

成功したら、x 264ディレクトリに戻り、コンパイルを続行します.
1
2
3
4
5
6
$cd x264-master/
$./configure
$make
#       ,   make install    x264     ,        ,
#       install-lib-static
$make install-lib-static

ffmpegソースディレクトリに戻り、ffmpegを再コンパイルします.今回はdebugを無効にし、x 264を含め、コンパイル静的ライブラリを明示的に指定します(書かないとデフォルトも静的ライブラリです).
1
2
$./configure --disable-debug --enable-static --enable-libx264

エラー:
1
libx264 is gpl and --enable-gpl is not specified.

続行:
1
$./configure --disable-debug --enable-static --enable-libx264 --enable-gpl

エラー:
1
ERROR: libx264 not found
ffbuild/config.logファイルを開いてエラーメッセージを表示します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_close_library':
opencl.c:(.text+0x5dd): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_load_library':
opencl.c:(.text+0x62f): undefined reference to `dlopen'
opencl.c:(.text+0x648): undefined reference to `dlsym'
opencl.c:(.text+0x662): undefined reference to `dlsym'
opencl.c:(.text+0x67c): undefined reference to `dlsym'
opencl.c:(.text+0x696): undefined reference to `dlsym'
opencl.c:(.text+0x6b0): undefined reference to `dlsym'
/usr/local/lib/libx264.a(opencl-8.o):opencl.c:(.text+0x6ca): more undefined references to `dlsym' follow
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_load_library':
opencl.c:(.text+0x934): undefined reference to `dlclose'
/usr/local/lib/libx264.a(opencl-8.o): In function `x264_8_opencl_lookahead_init':
opencl.c:(.text+0x170c): undefined reference to `dlopen'
opencl.c:(.text+0x1727): undefined reference to `dlsym'
opencl.c:(.text+0x173b): undefined reference to `dlsym'
opencl.c:(.text+0x1752): undefined reference to `dlsym'
opencl.c:(.text+0x1766): undefined reference to `dlsym'
opencl.c:(.text+0x179c): undefined reference to `dlclose'
collect2: ld returned 1 exit status

dlライブラリを追加:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$./configure --disable-debug --enable-static --enable-libx264 --enable-gpl --extra-libs=-ldl
$make
$./ffmpeg

ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
  configuration: --disable-debug --enable-libx264 --enable-gpl --extra-libs=-ldl
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

インストールに成功したことを示します.
最後に、後で本明細書で維持し続けるインストールスクリプトを提供します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env bash
#     ffmpeg          
#   root  
#              https://pengrl.com/p/20029/

set -x

#   yasm,ffmpeg         
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install
cd -

#   nasm,x264         
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.gz
tar xvf nasm-2.14.02.tar.gz
cd nasm-2.14.02/
./configure
make
make install
cd -

#   x264
wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar xvf x264-master.tar.bz2
cd x264-master/
./configure
make
make install-lib-static
cd -

#   ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
tar xvf ffmpeg-4.2.2.tar.bz2
cd ffmpeg-4.2.2
./configure --disable-debug --enable-static --enable-libx264 --enable-gpl --extra-libs=-ldl
make
make install
./ffmpeg