mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# For jetson platforms, build ffmpeg with custom patches. NVIDIA supplies a deb
 | 
						|
# with accelerated decoding, but it doesn't have accelerated scaling or encoding
 | 
						|
 | 
						|
set -euxo pipefail
 | 
						|
 | 
						|
INSTALL_PREFIX=/rootfs/usr/local
 | 
						|
 | 
						|
apt-get -qq update
 | 
						|
apt-get -qq install -y --no-install-recommends build-essential ccache clang cmake pkg-config
 | 
						|
apt-get -qq install -y --no-install-recommends libx264-dev libx265-dev
 | 
						|
 | 
						|
pushd /tmp
 | 
						|
 | 
						|
# Install libnvmpi to enable nvmpi decoders (h264_nvmpi, hevc_nvmpi)
 | 
						|
if [ -e /usr/local/cuda-10.2 ]; then
 | 
						|
    # assume Jetpack 4.X
 | 
						|
    wget -q https://developer.nvidia.com/embedded/L4T/r32_Release_v5.0/T186/Jetson_Multimedia_API_R32.5.0_aarch64.tbz2 -O jetson_multimedia_api.tbz2
 | 
						|
else
 | 
						|
    # assume Jetpack 5.X
 | 
						|
    wget -q https://developer.nvidia.com/downloads/embedded/l4t/r35_release_v3.1/release/jetson_multimedia_api_r35.3.1_aarch64.tbz2 -O jetson_multimedia_api.tbz2
 | 
						|
fi
 | 
						|
tar xaf jetson_multimedia_api.tbz2 -C / && rm jetson_multimedia_api.tbz2
 | 
						|
 | 
						|
wget -q https://github.com/AndBobsYourUncle/jetson-ffmpeg/archive/9c17b09.zip -O jetson-ffmpeg.zip
 | 
						|
unzip jetson-ffmpeg.zip && rm jetson-ffmpeg.zip && mv jetson-ffmpeg-* jetson-ffmpeg && cd jetson-ffmpeg
 | 
						|
LD_LIBRARY_PATH=$(pwd)/stubs:$LD_LIBRARY_PATH   # tegra multimedia libs aren't available in image, so use stubs for ffmpeg build
 | 
						|
mkdir build
 | 
						|
cd build
 | 
						|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX
 | 
						|
make -j$(nproc)
 | 
						|
make install
 | 
						|
cd ../../
 | 
						|
 | 
						|
# Install nv-codec-headers to enable ffnvcodec filters (scale_cuda)
 | 
						|
wget -q https://github.com/FFmpeg/nv-codec-headers/archive/refs/heads/master.zip
 | 
						|
unzip master.zip && rm master.zip && cd nv-codec-headers-master
 | 
						|
make PREFIX=$INSTALL_PREFIX install
 | 
						|
cd ../ && rm -rf nv-codec-headers-master
 | 
						|
 | 
						|
# Build ffmpeg with nvmpi patch
 | 
						|
wget -q https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz
 | 
						|
tar xaf ffmpeg-*.tar.xz && rm ffmpeg-*.tar.xz && cd ffmpeg-*
 | 
						|
patch -p1 < ../jetson-ffmpeg/ffmpeg_patches/ffmpeg6.0_nvmpi.patch
 | 
						|
export PKG_CONFIG_PATH=$INSTALL_PREFIX/lib/pkgconfig
 | 
						|
# enable Jetson codecs but disable dGPU codecs
 | 
						|
./configure --cc='ccache gcc' --cxx='ccache g++' \
 | 
						|
            --enable-shared --disable-static --prefix=$INSTALL_PREFIX \
 | 
						|
            --enable-gpl --enable-libx264  --enable-libx265 \
 | 
						|
            --enable-nvmpi --enable-ffnvcodec --enable-cuda-llvm \
 | 
						|
            --disable-cuvid --disable-nvenc --disable-nvdec \
 | 
						|
    || { cat ffbuild/config.log && false; }
 | 
						|
make -j$(nproc)
 | 
						|
make install
 | 
						|
cd ../
 | 
						|
 | 
						|
rm -rf /var/lib/apt/lists/*
 | 
						|
popd
 |