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
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é
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.
#!/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
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:
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).
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