web-dev-qa-db-fra.com

Comment compiler FFmpeg avec le support x265?

Aujourd'hui, j'ai découvert que x265 est déjà présent dans ffmpeg. J'ai donc compilé ffmpeg avec ceci guide

Malheureusement, libx265 ne fonctionnait pas sur Ubuntu, cependant sur Windows, j’ai essayé la même chose avec zeranoe ffmpeg build et cela fonctionnait sans problème.

Alors pensez-vous que j'ai fait quelque chose de mal ou que cela n'est pas encore implémenté dans linux build (en utilisant ce guide)? Les résultats de la commande ffmpeg -codecs | grep -i hevc montrent:

  ffmpeg version 2.1.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Feb 19 2014 19:00:17 with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
  configuration: --prefix=/home/levan/ffmpeg_build --extra-cflags=-I/home/levan/ffmpeg_build/include --extra-ldflags=-L/home/levan/ffmpeg_build/lib --bindir=/home/levan/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab
  libavutil      52. 64.100 / 52. 64.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  1.102 /  4.  1.102
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
 D.V.L. hevc                 H.265 / HEVC (High Efficiency Video Coding)

Merci pour votre temps

2
Levan

pour le moment (19 février 2014), la version de ffmpeg que vous avez compilée ne prend en charge que le décodage, pas l'encodage.

À partir du résultat de votre commande:

D.V.L. hevc H.265/HEVC (codage vidéo à haute efficacité)

Codecs:
D..... = Decoding supported
.E.... = Encoding supported
..V... = Video codec
..A... = Audio codec
..S... = Subtitle codec
...I.. = Intra frame-only codec
....L. = Lossy compression
.....S = Lossless compression

Vous pouvez essayer ce binaire précompilé - https://code.google.com/p/x265/downloads/detail?name=x265-bin-ffmpeg-201206-preview2.Zip&can=2&q=&sort=- téléchargé

4
Panther

Vous pouvez obtenir un paquet avec encodage et décodage x265 cuit dans ici.

Choisissez votre version de système d'exploitation dans la liste déroulante Publiée dans pour filtrer les packages de votre version d'Ubuntu.

Ajoutez le PPA à votre sources.lst

deb http://ppa.launchpad.net/motumedia/ffmpeg-daily/ubuntu YOUR_UBUNTU_VERSION_HERE main

Dans mon cas, c'est fidèle alors j'ai ajouté deb http://ppa.launchpad.net/motumedia/ffmpeg-daily/ubuntu trusty main

Prendre plaisir!

Notez qu'il s'agit de versions quotidiennes et qu'elles "sont destinées à la reconstruction et au test de packages dépendants. N'activez pas ce PPA sur les systèmes de production!" Cela étant dit, je n'ai eu aucun problème avec les systèmes auxquels j'ai ajouté ce PPA et (du moins pour moi), l'augmentation de la vitesse valait bien le risque encouru.

ffmpeg -codecs |grep 265

  ffmpeg version 2.8.1-1~14.04~motumedia0 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
  configuration: --prefix=/usr --extra-version='1~14.04~motumedia0' --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-openal --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-opengl --enable-x11grab --enable-libiec61883 --enable-libdc1394 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
 DEV.L. hevc                 H.265 / HEVC (High Efficiency Video Coding) (encoders: libx265 )

Testé sur une nouvelle installation de Trusty 64 bits et constaté qu’il était beaucoup plus rapide que la version précédente que j’avais essayée.

1
Elder Geek
#!/bin/bash

#source installer.cfg
TEST_VID="tryout.mp4"
INST_PREFIX="/usr"
SOURCE_PREFIX="${HOME}/ffmpeg_source"


function display_message {

    clear
    echo $1
    sleep 5
}

function update_sys {

   display_message "Updating Ubuntu using apt-get update"
   apt-get update

   display_message "Installing required packages"

   apt-get install -y autoconf automake build-essential Mercurial git libarchive-dev fontconfig checkinstall
   apt-get install -y libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libgnutls-dev
   apt-get install -y libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo libtool libva-dev
   apt-get install -y libbs2b-dev libcaca-dev libopenjpeg-dev librtmp-dev libvpx-dev libvdpau-dev
   apt-get install -y libwavpack-dev libxvidcore-dev lzma-dev liblzma-dev zlib1g-dev cmake-curses-gui
   apt-get install -y libx11-dev libxfixes-dev libmp3lame-dev libx264-dev #libx264-146 libx264-dev

   sleep 5
}


function install_libnuma {

   NUMA_LIB="numactl-2.0.11.tar.gz"
   NUMA_PATH=$(basename ${NUMA_LIB} .tar.gz)

   cd ${SOURCE_PREFIX}

   if [ ! -d "${NUMA_PATH}" ];then

        wget -O ${NUMA_LIB} "ftp://oss.sgi.com/www/projects/libnuma/download/${NUMA_LIB}"
   fi

   tar xfzv ${NUMA_LIB}
   cd ${NUMA_PATH}
   ./configure
   make
   make install

   sleep 5
}


function install_libopus {

   OPUS_LIB=opus-1.1.2.tar.gz
   OPUS_PATH=$(basename ${OPUS_LIB} .tar.gz)

   cd ${SOURCE_PREFIX}

   if [ ! -d "${OPUS_PATH}" ];then

            wget http://downloads.xiph.org/releases/opus/${OPUS_LIB}

   fi

   tar xzvf ${OPUS_LIB}
   cd ${OPUS_PATH}
   ./configure --prefix="${INST_PREFIX}" --disable-shared
   make
   make install
   make check
   make clean

   sleep 5
}


function install_cmake {

    cd ${SOURCE_PREFIX}

    #Need further testing
    if [ ! -d "CMake" ];then

        git clone https://github.com/Kitware/CMake

    fi

    cd CMake
    ./bootstrap --prefix="/usr/local"
    make
    make install

    sleep 5
}


function install_aac {

   AAC_LIB="fdk-aac.tar.gz"

   cd ${SOURCE_PREFIX}

   if [ ! -d "mstorsjo-fdk-aac*" ];then

        wget -O ${AAC_LIB} https://github.com/mstorsjo/fdk-aac/tarball/master
   fi

   tar xzvf ${AAC_LIB}
   cd mstorsjo-fdk-aac*
   autoreconf -fiv
   ./configure --prefix="${INST_PREFIX}" --disable-shared
   make
   make install
   make distclean

   sleep 5
}


function install_yasm {

cd ${SOURCE_PREFIX}

if [ ! -d "yasm" ];then

        git clone git://github.com/yasm/yasm.git
fi

cd yasm
./autogen.sh
}


function install_x265 {

cd ${SOURCE_PREFIX}

if [ ! -d "x265" ];then

    hg clone https://bitbucket.org/multicoreware/x265

fi

cd x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="${INST_PREFIX}" ../../source

make
make install

sleep 5
}


function install_ffmpeg {

cd ${SOURCE_PREFIX}

if [ ! -d "ffmpeg" ];then

        git clone git://source.ffmpeg.org/ffmpeg.git
fi

cd ffmpeg

PKG_CONFIG_PATH="${INST_PREFIX}/pkgconfig" \
./configure --prefix="${INST_PREFIX}" \
    --pkg-config-flags="--static" \
    --extra-cflags="-I${INST_PREFIX}/include"  \
    --extra-ldflags="-L${INST_PREFIX}/lib" \
    --enable-gpl \
    --enable-libass \
    --enable-libbluray \
    --enable-fontconfig \
    --enable-bzlib \
    --enable-gnutls \
    --enable-libbs2b \
    --enable-libcaca \
    --enable-zlib \
    --enable-libopenjpeg \
    --enable-librtmp \
    --enable-libvo-amrwbenc \
    --enable-libwavpack \
    --enable-lzma \
    --enable-libfdk-aac \
    --enable-libfreetype \
    --enable-libmp3lame \
    --enable-libopus \
    --enable-libtheora \
    --enable-libvpx  \
    --enable-libx264 \
    --enable-libx265 \
    --enable-nonfree \
    --enable-version3

make
make install

sleep 5
}


function testing {

   cd ${SOURCE_PREFIX}

   "${INST_PREFIX}"/bin/ffmpeg -i ${TEST_VID} -c:v libx265 -c:a aac test.mp4

   if [ $? -eq 0 ];then

        echo "TEST PASSED!"

   else

        echo "TEST FAILED!. CONTAINS ERRORS!"
        exit
   fi

   sleep 5
 }

display_message "Update Ubuntu System"
update_sys


if [ ${SOURCE_PREFIX} != "/usr" ];then

   mkdir ${INST_PREFIX}

fi

#Install Latest libnuma
display_message "Installing libnuma-dev"
install_libnuma

#Install libopus
display_message "Installing libopus-dev"
install_libopus

#Install CMAKE
display_message "Installing CMake" | tee logfile
install_cmake

#Install latest libfdk-aac-dev
display_message "Installing fdk-aac" | tee logfile
install_aac

#Install latest YASM
display_message "Installing YASM" | tee logfile
install_yasm

#Use the latest x265 codec
display_message "Installing libx265-dev" | tee logfile
install_x265

#Install ffmpeg
display_message "Installing ffmpeg" | tee logfile
install_ffmpeg


#Conduct testing
display_message "Conduct testing"
testing

echo "DONE!"
sleep 5
Contact GitHub API Training Shop Blog About
1
Mobieus Jay

Le guide auquel vous êtes lié ne contient actuellement pas les instructions nécessaires pour compiler le support x265 de ffmpeg. Il n’est donc pas étonnant que votre construction ne supporte pas le support x265 alors que celui de quelqu'un d’autre.

Vous avez 3 options:

  • Vous pouvez suivre le instructions sur le wiki x265 pour construire le codeur autonome.
  • Regardez comment x264 est inclus dans ce guide pour la construction de ffmpeg avec le support x264 (ou throw ffmpeg avec x265 dans votre moteur de recherche préféré [le mien n’est pas Google]).
  • Sinon, vous pouvez simplement utiliser les fichiers binaires Windows avec Wine.

Sachez que x265, contrairement à x264, n’est pas hébergé en tant que référentiel git sur VideoLAN (un page existe cependant), mais par une autre société de bitbucket qui se concentre sur le développement x265. Remplacer simplement x264 par x265 dans le guide ne fonctionnera pas.

Rappelez-vous que x265 ressemble à son puissant concurrent Daala en est encore à ses débuts (x265 ne produit que des versions fonctionnelles depuis quelques semaines).

1
LiveWireBT

J'ai écrit un script d'installation pour ffmpeg compilé avec les options libx265 et AAC.

C'est disponible sur GitHub

#!/bin/bash
source installer.cfg
function display_message {

    clear
    echo $1
    sleep 5
}

function update_sys {
    display_message "Updating Ubuntu using apt-get update"
    apt-get update
    display_message "Installing required packages"
    apt-get install -y autoconf automake build-essential Mercurial git libarchive-dev fontconfig checkinstall
    apt-get install -y libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libgnutls-dev
    apt-get install -y libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo libtool libva-dev
    apt-get install -y libbs2b-dev libcaca-dev libopenjpeg-dev librtmp-dev libvpx-dev libvdpau-dev
    apt-get install -y libwavpack-dev libxvidcore-dev lzma-dev liblzma-dev zlib1g-dev cmake-curses-gui
    apt-get install -y libx11-dev libxfixes-dev libmp3lame-dev libx264-dev #libx264-146 libx264-dev
    sleep 5
}
function install_libnuma {
    NUMA_LIB="numactl-2.0.11.tar.gz"
    NUMA_PATH=$(basename ${NUMA_LIB} .tar.gz)
    cd ${SOURCE_PREFIX}
    if [ ! -d "${NUMA_PATH}" ];then
            wget -O ${NUMA_LIB} "ftp://oss.sgi.com/www/projects/libnuma/download/${NUMA_LIB}"
    fi
    tar xfzv ${NUMA_LIB}
    cd ${NUMA_PATH}
    ./configure
    make
    make install
    sleep 5
}
function install_libopus {

    OPUS_LIB=opus-1.1.2.tar.gz
        OPUS_PATH=$(basename ${OPUS_LIB} .tar.gz)
        cd ${SOURCE_PREFIX}
        if [ ! -d "${OPUS_PATH}" ];then
                wget http://downloads.xiph.org/releases/opus/${OPUS_LIB}
        fi
        tar xzvf ${OPUS_LIB}
        cd ${OPUS_PATH}
        ./configure --prefix="${INST_PREFIX}" --disable-shared
        make
        make install
    make check
        make clean

    sleep 5
}
function install_cmake {
        cd ${SOURCE_PREFIX}
    #Need further testing
    if [ ! -d "CMake" ];then
            git clone https://github.com/Kitware/CMake
    fi
    cd CMake
        ./bootstrap --prefix="/usr/local"
        make
        make install
    sleep 5
}
function install_aac {
    AAC_LIB="fdk-aac.tar.gz"
    cd ${SOURCE_PREFIX}
    if [ ! -d "mstorsjo-fdk-aac*" ];then
            wget -O ${AAC_LIB} https://github.com/mstorsjo/fdk-aac/tarball/master
    fi
    tar xzvf ${AAC_LIB}
    cd mstorsjo-fdk-aac*
    autoreconf -fiv
    ./configure --prefix="${INST_PREFIX}" --disable-shared
    make
    make install
    make distclean
    sleep 5
}
function install_yasm {
    cd ${SOURCE_PREFIX}
    if [ ! -d "yasm" ];then
            git clone git://github.com/yasm/yasm.git
    fi
    cd yasm
    ./autogen.sh
}
function install_x265 {
    cd ${SOURCE_PREFIX}
    if [ ! -d "x265" ];then
            hg clone https://bitbucket.org/multicoreware/x265
    fi
    cd x265/build/linux
    cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="${INST_PREFIX}" ../../source
    make
    make install
    sleep 5
}
function install_ffmpeg {

    cd ${SOURCE_PREFIX}
    if [ ! -d "ffmpeg" ];then
            git clone git://source.ffmpeg.org/ffmpeg.git
    fi

    cd ffmpeg

    PKG_CONFIG_PATH="${INST_PREFIX}/pkgconfig" \
    ./configure --prefix="${INST_PREFIX}" \
            --pkg-config-flags="--static" \
            --extra-cflags="-I${INST_PREFIX}/include"  \
            --extra-ldflags="-L${INST_PREFIX}/lib" \
            --enable-gpl \
            --enable-libass \
            --enable-libbluray \
            --enable-fontconfig \
            --enable-bzlib \
            --enable-gnutls \
            --enable-libbs2b \
            --enable-libcaca \
            --enable-zlib \
            --enable-libopenjpeg \
            --enable-librtmp \
            --enable-libvo-amrwbenc \
            --enable-libwavpack \
            --enable-lzma \
            --enable-libfdk-aac \
            --enable-libfreetype \
            --enable-libmp3lame \
            --enable-libopus \
            --enable-libtheora \
            --enable-libvpx  \ 
            --enable-libx264 \ 
            --enable-libx265 \
            --enable-nonfree \
            --enable-version3
    make
    make install
    sleep 5
}
function testing {
    cd ${SOURCE_PREFIX}
    "${INST_PREFIX}"/bin/ffmpeg -i ${TEST_VID} -c:v libx265 -c:a aac test.mp4
    if [ $? -eq 0 ];then
            echo "TEST PASSED!"
    else
            echo "TEST FAILED!. CONTAINS ERRORS!"
            exit
    fi
    sleep 5
}

display_message "Update Ubuntu System"
update_sys

#if [ ! -d ${SOURCE_PREFIX} ];then

#   mkdir ${SOURCE_PREFIX}
#fi

if [ ${SOURCE_PREFIX} != "/usr" ];then
    mkdir ${INST_PREFIX}
fi
#Install Latest libnuma
display_message "Installing libnuma-dev"
install_libnuma

#Install libopus
display_message "Installing libopus-dev"
install_libopus

#Install CMAKE
display_message "Installing CMake" | tee logfile
install_cmake

#Install latest libfdk-aac-dev
display_message "Installing fdk-aac" | tee logfile
install_aac

#Install latest YASM
display_message "Installing YASM" | tee logfile
install_yasm

#Use the latest x265 codec
display_message "Installing libx265-dev" | tee logfile
install_x265

#Install ffmpeg
display_message "Installing ffmpeg" | tee logfile
install_ffmpeg

#Conduct testing
display_message "Conduct testing"
testing

echo "DONE!"
sleep 5
0
Mobieus Jay