-
-
Save enzanki-ars/7d67996a90883e928bc1dd2db7ef0351 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# ######################################################### | |
# | |
# WW WW AAA RRRRRR NN NN IIIII NN NN GGGG | |
# WW WW AAAAA RR RR NNN NN III NNN NN GG GG | |
# WW W WW AA AA RRRRRR NN N NN III NN N NN GG | |
# WW WWW WW AAAAAAA RR RR NN NNN III NN NNN GG GG | |
# WW WW AA AA RR RR NN NN IIIII NN NN GGGGGG | |
# | |
# ######################################################### | |
# | |
# WARNING: This script was last modified in 2017, and a lot | |
# has changed with FFmpeg and RaspberryPi OS since then. | |
# This script no longer works as is and should not be used. | |
# The builtin FFmpeg might also work better now for most | |
# hardware accelerated encoding/decoding needs. | |
# | |
# ######################################################### | |
# Compile and install/update (or install via Apt) FFmpeg Codecs | |
# Compile and install/update FFmpeg suite | |
# Compile with hardware acceleration | |
# Modified from https://retroresolution.com/compiling-ffmpeg-from-source-code-all-in-one-script/ | |
echo "Begining Installation of FFmpeg Suite" | |
#Update APT Repository | |
echo "Updating the APT repository information" | |
sudo apt-get update | |
#Create Working Directories | |
echo "Setting up working directories to be used during the installation and build process" | |
cd ~ | |
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,x264,x265} | |
mkdir -p ~/ffmpeg_sources | |
mkdir -p ~/ffmpeg_build | |
#Build Tools | |
echo "Installing various tools and packages, including audio-video codecs, required for building FFmpeg" | |
sudo apt-get -y install \ | |
autoconf \ | |
automake \ | |
build-essential \ | |
git \ | |
pkg-config \ | |
texinfo \ | |
wget \ | |
yasm \ | |
libavdevice-dev \ | |
frei0r-plugins-dev \ | |
ladspa-sdk \ | |
libass-dev \ | |
libavc1394-dev \ | |
libavresample-dev \ | |
libbluray-dev \ | |
libbs2b-dev \ | |
libcaca-dev \ | |
libcdio-dev \ | |
libcelt-dev \ | |
libchromaprint-dev \ | |
libdrm-dev \ | |
libfdk-aac-dev \ | |
flite1-dev \ | |
libfontconfig1-dev \ | |
libfreetype6-dev \ | |
libfrei0r-ocaml-dev \ | |
libfribidi-dev \ | |
libgme-dev \ | |
libgsm1-dev \ | |
libiec61883-dev \ | |
libjack-dev \ | |
libkvazaar-dev \ | |
libladspa-ocaml-dev \ | |
libmodplug-dev \ | |
libmp3lame-dev \ | |
libmp3lame-dev \ | |
libopencore-amrnb-dev \ | |
libopencore-amrwb-dev \ | |
libopencv-dev \ | |
libopenh264-dev \ | |
libopenjpeg-dev \ | |
libopenmpt-dev \ | |
libopus-dev \ | |
libopus-dev \ | |
libpulse-dev \ | |
librsvg2-dev \ | |
librtmp-dev \ | |
librubberband-dev \ | |
libsdl2-dev \ | |
libshine-dev \ | |
libsmbclient-dev \ | |
libsnappy-dev \ | |
libsoxr-dev \ | |
libspeex-dev \ | |
libssh-dev \ | |
libtesseract-dev \ | |
libtheora-dev \ | |
libtheora-dev \ | |
libtool \ | |
libtwolame-dev \ | |
libv4l-dev \ | |
libva-dev \ | |
libvdpau-dev \ | |
libvidstab-dev \ | |
libvo-amrwbenc-dev \ | |
libvorbis-dev \ | |
libvorbis-dev \ | |
libvpx-dev \ | |
libvpx-dev \ | |
libwavpack-dev \ | |
libwebp-dev \ | |
libx264-dev \ | |
libx264-dev \ | |
libx265-dev \ | |
libx265-dev \ | |
libxcb1-dev \ | |
libxcb-shape0-dev \ | |
libxcb-shm0-dev \ | |
libxcb-xfixes0-dev \ | |
libxml2-dev \ | |
libxvidcore-dev \ | |
libzimg-dev \ | |
libzmq-dev \ | |
libzvbi-dev \ | |
libopenal-dev \ | |
libssl1.0-dev \ | |
zlib1g-dev | |
cd ~/ffmpeg_sources | |
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 -O ffmpeg-snapshot.tar.bz2 | |
tar xjvf ffmpeg-snapshot.tar.bz2 | |
cd ffmpeg | |
echo "Configuring FFmpeg" | |
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ | |
--prefix="$HOME/ffmpeg_build" \ | |
--pkg-config-flags="--static" \ | |
--extra-cflags="-I$HOME/ffmpeg_build/include" \ | |
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \ | |
--extra-libs="-lpthread -lm" \ | |
--bindir="$HOME/bin" \ | |
--enable-gpl \ | |
--enable-nonfree \ | |
--enable-version3 \ | |
--enable-avresample \ | |
--enable-omx \ | |
--enable-omx-rpi \ | |
--enable-mmal \ | |
--enable-avisynth \ | |
--enable-chromaprint \ | |
--enable-frei0r \ | |
--enable-ladspa \ | |
--enable-libass \ | |
--enable-libbluray \ | |
--enable-libbs2b \ | |
--enable-libcaca \ | |
--enable-libcelt \ | |
--enable-libcdio \ | |
--enable-libdc1394 \ | |
--enable-libfdk-aac \ | |
--enable-libflite \ | |
--enable-libfontconfig \ | |
--enable-libfreetype \ | |
--enable-libfribidi \ | |
--enable-libgme \ | |
--enable-libgsm \ | |
--enable-libiec61883 \ | |
--enable-libjack \ | |
--enable-libkvazaar \ | |
--enable-libmodplug \ | |
--enable-libmp3lame \ | |
--enable-libopencore-amrnb \ | |
--enable-libopencore-amrwb \ | |
--enable-libopencv \ | |
--enable-libopenh264 \ | |
--enable-libopenjpeg \ | |
--enable-libopenmpt \ | |
--enable-libopus \ | |
--enable-libpulse \ | |
--enable-librsvg \ | |
--enable-librubberband \ | |
--enable-librtmp \ | |
--enable-libshine \ | |
--enable-libsmbclient \ | |
--enable-libsnappy \ | |
--enable-libsoxr \ | |
--enable-libspeex \ | |
--enable-libssh \ | |
--enable-libtesseract \ | |
--enable-libtheora \ | |
--enable-libtwolame \ | |
--enable-libv4l2 \ | |
--enable-libvidstab \ | |
--enable-libvmaf \ | |
--enable-libvo-amrwbenc \ | |
--enable-libvorbis \ | |
--enable-libvpx \ | |
--enable-libwavpack \ | |
--enable-libwebp \ | |
--enable-libx264 \ | |
--enable-libx265 \ | |
--enable-libxavs \ | |
--enable-libxcb \ | |
--enable-libxcb-shm \ | |
--enable-libxcb-xfixes \ | |
--enable-libxcb-shape \ | |
--enable-libxvid \ | |
--enable-libxml2 \ | |
--enable-libzimg \ | |
--enable-libzmq \ | |
--enable-libzvbi \ | |
--enable-libdrm \ | |
--enable-openssl \ | |
--enable-openal \ | |
--enable-opengl | |
echo "Making FFmpeg" | |
PATH="$HOME/bin:$PATH" make -j4 | |
make install | |
hash -r | |
#Update Shared Library Cache | |
echo "Updating Shared Library Cache" | |
sudo ldconfig | |
echo "FFmpeg and Codec Installation Complete" |
Sorry, what is "tas"?
"tas zxvf celt-0.11.1.tar.gz"
hoobs@hoobs:~/config $ tas zxvf celt-0.11.1.tar.gz
bash: tas: command not found
Still get the following failures:
1.)
Installing various tools and packages, including audio-video codecs, required for building FFmpeg
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libfdk-aac-dev
E: Unable to locate package libopenh264-dev
E: Unable to locate package libzimg-dev
E: Unable to locate package libfdk-aac-dev
E: Unable to locate package libkvazaar-dev
E: Unable to locate package libopenh264-dev
E: Unable to locate package libzimg-dev
--2020-01-27 01:47:07-- http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
Resolving ffmpeg.org (ffmpeg.org)... 79.124.17.100
2.)
ERROR: chromaprint not found
3.)
If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
[email protected] mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.
Making FFmpeg
Makefile:166: /tests/Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'. Stop.
Makefile:166: /tests/Makefile: No such file or directory
make: *** No rule to make target '/tests/Makefile'. Stop.
install: cannot stat '/home/hoobs/ffmpeg_sources/ffmpeg/ffmpeg': No such file or directory
install: cannot stat '/home/hoobs/ffmpeg_sources/ffmpeg/ffplay': No such file or directory
install: cannot stat '/home/hoobs/ffmpeg_sources/ffmpeg/ffprobe': No such file or directory
Updating Shared Library Cache
FFmpeg and Codec Installation Complete
please read "tas" -> "tar"
i had an error in avisynth
"ERROR: avisynth/avisynth_c.h not found"
apparently it was removed from ffmpeg and need to clone/compile it again :/
Please note. Actually the stock ffmpeg coming with raspberry is, support omx and neon. Try it with a simple scale from HD to SD without codecs or other parameters. Just the filter scale
Please note. Actually the stock ffmpeg coming with raspberry is, support omx and neon. Try it with a simple scale from HD to SD without codecs or other parameters. Just the filter scale
i'm trying to build a hardware accelerated ffmpeg to use with emby-server, currently it's only doing software accel... no ffmpeg is installed in the base OS, ffmpeg is only installed with emby-server
I'm using a RPi4 of 4GB with AVideo (ex youphptube) and it's compressing by HW the new videos form 720p to 480p and 360p every day.
Please try to use Raspbian from https://www.raspberrypi.org/downloads/ then
sudo apt install ffmpeg
then use a test HD video on mp4 and try to:
fmpeg -i $pathFileName -vf 'scale=-2:min(480\,if(mod(iw\,2)\,iw-1\,iw))' $destinationFile -y
this reencode the video at 480p usign NEON v6 hardware from CPU
then try to
fmpeg -i $pathFileName -c:a copy -c:v h264_omx -vf 'scale=-2:min(480\,if(mod(iw\,2)\,iw-1\,iw))' $destinationFile -y
This use the HW encoder of video processor.
BUT: compare the videos quality now
The speed is similar (3-4x) but the quality of NEON is superior for the moment. In future I hope that it change. but fot moment OMX is useless apart live scenarios in low quality but fastest.
Please try it
i'll try it, it's for raspi 3
with h264_omx the encoding it's a bit faster and the processor will be only at 65-70º max, but the video quality it's not good.
with h264_omx the encoding it's a bit faster and the processor will be only at 65-70º max, but the video quality it's not good.
installed from the repository and replaced the one in emby server with the repository.... working flawless
Getting
Unknown option "--enable-avresample".
See ./configure --help for available options.
because libavresample was deprecated in 2018-1, and removed from FFmpeg in 2021-4 (ffmpeg 4.4).
removing line 127 allows building ffmpeg albeit without avresample
support.
Substituting --enable-avresample
for --enable-swresample
might work.
Compillation bullseye ::
- aarch64 ~~ (X • opencv, omx-rpi, kvazaar, mmmal)(√ . . . )
- armv7l ~~ (X • opencv, omx-rpi, kvazaar)( √ . . . )
tmpdocs.epizy.com/000_Raspy_Bullseye_Ffmpeg.txt
Here my notes in spanish (please use google translator)
Note that the this custom ffmpeg version are not stable, and sometime ffmpeg get zombie, sometime occurs a kernel panik, but is very fast on raspberry pi4
compilar ffmpeg en raspberry pi4 debian buster con soporte para HW
Nota:
Problemas de inestabilidad. A veces el proceso de ffmpeg se cuelga y se gueda zombie. Lo peor es que el raspberry no consigue reinciarse porqué se cuelga también el proceso de reboot.
Por lo tanto hay que reiniciar fisicamente, quitando la corriente. Desaconsejado usar este ffmpeg en un servidor remoto.
Pero podría servir en casa para crear un encoder usando el script ffmpeg-remote.
http://www.celt-codec.org/downloads/
http://downloads.xiph.org/releases/celt/celt-0.11.1.tar.gz
[b]
https://github.com/jayrambhia/Install-OpenCV[/b]
(No estoy seguro probar ante sin este)Hay que instalar también Open-CV desde el código fuente (tarda una media hora larga)
Tampoco esto no estoy seguro que sirva
Aquí el script modificado para que se pueda compiañlr en raspberry pi4 con Raspbian oficial (debian buster)