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
 |