Как скомпилировать FFmpeg с поддержкой x265?

Сегодня я узнал, что x265 уже присутствует в ffmpeg, поэтому я скомпилировал ffmpeg с этим руководством

К сожалению, libx265 не работал в Ubuntu, однако в Windows я пробовал то же самое с zeranoe ffmpeg build , и он работал без проблем.

Как вы думаете, я сделал что-то не так или он еще не реализован в сборке Linux (используя это руководство)? Результаты команды ffmpeg -codecs | grep -i hevc показывают:

  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)

Спасибо за ваше время

2
задан 23 March 2016 в 02:28

5 ответов

В настоящее время (19 февраля '14) версия скомпилированного вами ffmpeg поддерживает только декодирование, а не кодирование.

Исходя из вашей команды:

D.V.L. hevc H.265 / HEVC (высокоэффективное кодирование видео)

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

Вы можете попробовать этот предварительно скомпилированный двоичный файл - https://code.google.com/p/x265/ ? загрузки / подробно назвать = x265-bin-ffmpeg-201206-preview2.zip & амп; может = 2 & амп; д = & амп; = -uploaded рода

0
ответ дан 23 March 2016 в 02:28

Вы можете получить пакет с кодировкой и декодированием x265, запеченный в здесь.

Выберите версию ОС в раскрывающемся списке «Опубликовано в», чтобы отфильтровать пакеты для вашей версии Ubuntu.

Добавьте PPA к своим источникам.lst

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

В моем случае это достоверно, поэтому я добавил deb http://ppa.launchpad.net/motumedia/ffmpeg-daily/ubuntu trusty main

Наслаждайтесь!

Обратите внимание, что это ежедневные сборки и «Они предназначены для пересборки тестов и тестирования зависимых пакетов. Не включайте этот PPA в производственных системах!» Тем не менее, у меня не было проблем с системами, к которым я добавил этот PPA, и (по крайней мере для меня) увеличение скорости оправдало риск.

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 )

Протестировано на новой установке Trusty 64-bit и оказалось, что она намного быстрее, чем предыдущая версия, которую я пробовал.

0
ответ дан 23 March 2016 в 02:28

В руководстве, на которое вы ссылаетесь, в настоящее время отсутствуют необходимые инструкции для компиляции поддержки x265 для ffmpeg, поэтому неудивительно, почему ваша сборка не имеет поддержки x265, в то время как у кого-то еще.

У вас есть 3 варианта:

  • Вы можете следовать инструкциям в вики x265 для создания автономного кодировщика.
  • Посмотрите, как x264 включен в это руководство для построения ffmpeg с поддержкой x264 (или добавьте ffmpeg с x265 в вашу любимую поисковую систему [моя не Google]).
  • В качестве альтернативы вы можете просто использовать бинарные файлы Windows с Wine.

Имейте в виду, что x265, в отличие от x264, размещается не в качестве git-репозитория на VideoLAN (хотя существует страница ), а в другой компании, специализирующейся на bitbucket, которая занимается разработкой x265. Простая замена x264 на x265 в руководстве не сработает.

Помните, что x265, как и его сильный конкурент Daala , все еще находится на ранней стадии разработки (x265 просто производит функциональные сборки через несколько недель) .

0
ответ дан 23 March 2016 в 02:28
#!/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
0
ответ дан 23 March 2016 в 02:28

Я написал скрипт установки для ffmpeg, скомпилированный с опциями libx265 и AAC.

Это доступно на 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
ответ дан 23 March 2016 в 02:28

Другие вопросы по тегам:

Похожие вопросы: