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