オーディオとビデオを支える技術(9)- FFMPEGをArch linuxにインストールする。

LINUXffmpegの開発を行う方法について始めます。ここでは、Archlinuxを使っていますが、他のlinux でも実行できると思います。

1. ffmpegのダウンロード

公式サイトから最新バージョンをダウンロードします。

Download FFmpeg

2.ターミナルから必要なソフトをダウンロードします。

sudo pacman -S gcc g++ make 
sudo pacman -S nasm cmake
sudo pacman -S ffmpeg

ここでのffmpegは,実行環境としてのインストールになります.
今回のffmpegのインストールの目的は,c++/Cでffmpegを使うことで,ffmpegをコマンドから使うことではありません.

3.ffmpegのインストール

これらのコマンドを実行するとインストールできます。

tar xvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
./config --disable-yasm --enable-shared --disable-static
make -j 8
sudo make install

よくこの./configure → make → make installの3セットを使うことがあるので覚えておいたほうがいいかも。

先程、ダウンロードしたファイルを開きます。
この中で./configureについて簡単に説明します。
--disable-yasmアセンブリを無効にすることを意味します。
make -j 88個のスレッドをmakeに使います。コンパイルの速度が大幅に向上します。自分のCPUは4コア/8スレッドなので自分のCPUに応じて使います。

--enable-shared --disable-staticつまり、静的ライブラリーではなく、動的ライブラリーを作ります。

locateコマンドを実際に実行するとffmpegがインストールされた場所がわかりますね。

locate libavutil |grep include


/usr/include/libavutil
/usr/include/libavutil/adler32.h
/usr/include/libavutil/aes.h
/usr/include/libavutil/aes_ctr.h
/usr/include/libavutil/attributes.h
/usr/include/libavutil/audio_fifo.h
/usr/include/libavutil/avassert.h
/usr/include/libavutil/avconfig.h
/usr/include/libavutil/avstring.h
/usr/include/libavutil/avutil.h
/usr/include/libavutil/base64.h

実際に使います。

ffmpegのバージョンを参照するプログラムを作ってみます。
c言語のファイルを作ります。hello_ffmpeg.cと名前をつけます。

#include <stdio.h>
  
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavdevice/avdevice.h"
 
  
int main()
{
    printf("Hello FFmpeg!");
    av_register_all();
    unsigned int version = avcodec_version(); 
    printf("version is: %d \n", version);
    return 0;
}

実行します。

$ gcc -o hello_ffmpeg hello_ffmpeg.c -Iffmpeg -Lffmpeg -lavdevice -lavformat -lavfilter -lavcodec -lswscale -lavutil -lswresample
$hello_ffmpeg 
Hello FFmpeg!version is: 3824484 

Qtで動作するには、

proファイルに、下を一行追加する。

LIBS = -Iffmpeg -Lffmpeg -lavdevice -lavformat -lavfilter -lavcodec -lswscale -lavutil -lswresample

最後に

なにか問題がありましたら遠慮せずにコメントを残していってください。