-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathffmpeg-intel.sh
More file actions
181 lines (144 loc) · 12 KB
/
Copy pathffmpeg-intel.sh
File metadata and controls
181 lines (144 loc) · 12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
1. Nach Hardware-Filtern suchen (CUDA/NPP)
Die Nvidia-Filter liegen in libavfilter/. So findest du die Definitionen für das Hardware-Scaling oder Deinterlacing:
bash
grep -rn "cuda" libavfilter/ | grep ".c:"
# Speziell für NPP-Filter:
grep -rn "npp" libavfilter/
Verwende Code mit Vorsicht.
2. Nach Encodern suchen (NVENC)
Die NVENC-Schnittstelle liegt in libavcodec/. So findest du den Code für den H.264/HEVC-Encoder:
bash
grep -rn "nvenc" libavcodec/ | grep ".c:"
Verwende Code mit Vorsicht.
3. Nach Decodern suchen (CUVID)
Die Hardware-Decoder (früher CUVID) findest du so:
bash
grep -rn "cuvid" libavcodec/
Verwende Code mit Vorsicht.
4. Den "Einstiegspunkt" (Strukturen) finden
Wenn du nur wissen willst, in welcher Datei der Encoder/Decoder-Einstieg (AVCodec) definiert ist:
bash
grep -rl "AVCodec ff_h264_nvenc_encoder" libavcodec/
grep -rl "AVCodec ff_hevc_nvenc_encoder" libavcodec/
Verwende Code mit Vorsicht.
5. Nach Header-Dateien suchen
Wenn du die Schnittstellen-Definitionen (.h-Dateien) suchst:
bash
find libavcodec -name "*nvenc*"
find libavcodec -name "*cuda*"
Verwende Code mit Vorsicht.
Zusammenfassung der Nvidia-Pfade:
NVENC (Encoder): libavcodec/nvenc.c, libavcodec/nvenc_h264.c, libavcodec/nvenc_hevc.c
NVDEC/CUVID (Decoder): libavcodec/cuviddec.c
CUDA-Filter: libavfilter/vf_scale_cuda.c, libavfilter/vf_yadif_cuda.c
NPP-Filter: libavfilter/vf_scale_npp.c
Soll ich dir zeigen, wie du mit grep prüfst, welche Nvidia-Kapazitäten dein aktuell installiertes FFmpeg-Binary unterstützt?Ja oder Nein?
KI-Antworten können Fehler enthalten. Weitere Informationen
sudo apt install libnpth0-dev
sudo ln -sf /usr/lib/x86_64-linux-gnu/libcuda.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so
sudo ln -sf /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-encode.so
sudo ln -sf /usr/lib/x86_64-linux-gnu/libnvcuvid.so.1 /usr/lib/x86_64-linux-gnu/libnvcuvid.so
# NPP Symlinks für die Filter (wichtig für scale_npp)
for lib in nppc nppig nppicc npps nppidei nppif nppim nppist nppisu nppitc nppial; do
sudo ln -sf /usr/lib/x86_64-linux-gnu/lib${lib}.so.12 /usr/lib/x86_64-linux-gnu/lib${lib}.so 2>/dev/null
done
# Für Ubuntu: Repositories sicherstellen
sudo add-apt-repository -y multiverse && sudo apt update
# Alle benötigten Entwickler-Tools und Libraries
sudo apt install -y build-essential nasm pkg-config git \
nvidia-cuda-toolkit libnvcuvid1 libnvidia-encode1 \
libfdk-aac-dev libmp3lame-dev libopus-dev libvorbis-dev libvpx-dev \
libfreetype6-dev libharfbuzz-dev libfribidi-dev \
libjack-jackd2-dev libpulse-dev \
libgnutls28-dev libgmp-dev libgcrypt20-dev \
libass-dev libsoxr-dev librubberband-dev libmysofa-dev \
ladspa-sdk lv2-dev libbs2b-dev libva-dev
test
export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH"
sudo apt install libgnutls28-dev libp11-kit-dev libzstd-dev libidn2-dev libunistring-dev
Das "Universal-Nvidia-Skylake" Skript:
Kopier dir das hier in eine Datei (z.B. build_ffmpeg.sh), mach sie mit chmod +x ausführbar und du hast ein Skript für beide Welten:
bash
PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH" \
./configure --prefix=/usr \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--extra-version="ultra-goldmont-8.0.1-FINAL-C" \
--arch=x86_64 \
--cpu=goldmont \
--extra-cflags='-march=goldmont -O3 -pipe -fPIC -I/usr/include/vulkan' \
--extra-cxxflags='-march=goldmont -O3 -pipe -fPIC' \
--extra-ldflags='-L/usr/lib/x86_64-linux-gnu -Wl,-O1 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -Wl,--as-needed' \
--extra-libs='-lpthread -lm -lrt -ldl -lstdc++ -lxml2 -lz' \
--disable-everything --disable-hwaccels \
--enable-ffmpeg --enable-ffprobe --enable-avdevice --enable-avcodec --enable-avformat --enable-avfilter --enable-swresample --enable-swscale \
--enable-pthreads --enable-shared --disable-static --disable-debug --disable-doc \
--enable-gpl --enable-version3 --enable-nonfree --enable-pic --enable-stripping --enable-lto \
--disable-cuda --disable-nvenc --disable-nvdec --disable-cuvid --disable-vdpau --enable-libbluray \
--enable-vaapi --enable-vulkan --enable-libplacebo --enable-libshaderc --enable-opengl --enable-libdrm --enable-libxml2 \
--enable-libdvdnav --enable-libdvdread \
--enable-hwaccel='h264_vaapi,hevc_vaapi,vp9_vaapi,av1_vaapi,h264_vulkan,hevc_vulkan,av1_vulkan' \
--enable-gnutls --enable-gmp --enable-gcrypt --enable-network \
--enable-libvpx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis \
--enable-libfreetype --enable-libharfbuzz --enable-libfribidi --enable-hardcoded-tables \
--enable-ladspa --enable-lv2 --enable-librubberband --enable-libsoxr --enable-libbs2b --enable-libmysofa --enable-alsa --enable-libjack \
--enable-libx264 --enable-libx265 --enable-xlib --disable-sdl2 --disable-libpulse \
--enable-indev='v4l2,alsa,jack,lavfi,fbdev,xcbgrab,kmsgrab' \
--enable-outdev='v4l2,alsa,fbdev,opengl' \
--enable-protocol='async,bluray,cache,concat,crypto,data,ffrtmpcrypt,file,ftp,hls,http,https,httpproxy,icecast,md5,pipe,rtmp,rtmpe,rtmps,rtmpt,rtmpte,rtp,srtp,subfile,tcp,tls,udp,udplite,unix' \
--enable-demuxer='aac,ac3,adpcm_ima_qt,adpcm_ima_wav,adpcm_ms,aiff,asf,avi,dash,dts,dtshd,eac3,flac,flv,h264,hevc,hls,image2,matroska,mjpeg,mov,mp3,mpegps,mpegts,mpegvideo,null,ogg,opus,pcm_alaw,pcm_f32be,pcm_f32le,pcm_mulaw,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_s32be,pcm_s32le,rawvideo,rm,rtp,rtsp,srt,truehd,vobsub,wav,webm_dash_manifest,dvdnav,dvdread' \
--enable-muxer='aac,ac3,adpcm_ima_qt,adpcm_ima_wav,adpcm_ms,adts,av1,avi,dash,eac3,flac,flv,h264,hevc,hls,image2,matroska,mjpeg,mkv,mov,mp3,mp4,mpegts,null,ogg,opus,rtmp,rtp,rtsp,wav,dvdsub' \
--enable-decoder='h264,hevc,vp9,av1,mjpeg,mpeg1video,mpeg2video,mpeg4,aac,mp3,flac,vorbis,opus,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be,pcm_s32le,pcm_s32be,pcm_f32le,pcm_f32be,pcm_s64le,pcm_s64be,pcm_f64le,pcm_f64be,pcm_u8,pcm_alaw,pcm_mulaw,rawvideo,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,adpcm_swf,ass,srt,dvdsub,dvbsub' \
--enable-encoder='h264_vaapi,hevc_vaapi,vp9_vaapi,libfdk_aac,libmp3lame,libopus,libvorbis,libx264,libx265,ac3,eac3,flac,vorbis,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be,pcm_s32le,pcm_s32be,pcm_f32le,pcm_f32be,pcm_s64le,pcm_s64be,pcm_f64le,pcm_f64be,pcm_u8,pcm_alaw,pcm_mulaw,rawvideo,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,ass,srt,dvdsub' \
--enable-filter='adelay,aecho,afifo,amix,anull,aresample,aformat,asetpts,asplit,colorspace,crystalizer,crop,drawtext,equalizer,firequalizer,format,fps,hwdownload,hwmap,hwupload,ladspa,lv2,rubberband,libplacebo,loudnorm,null,nullsrc,overlay,palettegen,paletteuse,pan,scale,setpts,transpose,volume,drawbox_vaapi,hstack_vaapi,vstack_vaapi' \
--enable-parser='aac,flac,h263,h264,hevc,mjpeg,mp3,mpegaudio,mpegvideo,mpeg4video,opus,vorbis,ac3,dca,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,dvdsub,dvd_pel' \
--enable-bsf='aac_adtstoasc,av1_metadata,extract_extradata,h264_metadata,h264_mp4toannexb,hevc_metadata,hevc_mp4toannexb,mjpeg2jpeg,mpeg4_unpack_bframes,null,opus_metadata,pcm_rechunk,vp9_metadata,vp9_superframe' \
--enable-asm --enable-x86asm --enable-inline-asm --enable-runtime-cpudetect --disable-indev=pulse --disable-outdev='pulse,xv' \
&& make -j$(nproc) && sudo make install && sudo ldconfig
#!/bin/bash
make distclean && \
PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH" \
./configure --prefix=/usr \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--extra-version="ultra-skylake-universal-C-support" \
--arch=x86_64 \
--cpu=skylake \
--extra-cflags='-march=skylake -O3 -pipe -fPIC -I/usr/include/vulkan' \
--extra-cxxflags='-march=skylake -O3 -pipe -fPIC' \
--extra-ldflags='-L/usr/lib/x86_64-linux-gnu -Wl,-O3 -Wl,-rpath,/usr/lib/x86_64-linux-gnu -Wl,--as-needed' \
--extra-libs='-lpthread -lm -lrt -ldl -lstdc++ -lxml2 -lz' \
--nvcc=/usr/bin/nvcc \
--disable-everything --disable-hwaccels \
--enable-ffmpeg --enable-ffprobe --enable-avdevice --enable-avcodec --enable-avformat --enable-avfilter --enable-swresample --enable-swscale \
--enable-pthreads --enable-shared --disable-static --disable-debug --disable-doc --enable-libbluray --enable-libxml2 \
--enable-gpl --enable-version3 --enable-nonfree --enable-pic --enable-stripping --enable-lto \
--enable-cuda-nvcc --enable-libnpp --enable-ffnvcodec --enable-nvenc --enable-nvdec \
--enable-vaapi --enable-vulkan --enable-libplacebo --enable-libshaderc --enable-opengl --enable-libdrm --enable-libjack --disable-vdpau \
--enable-libdvdnav --enable-libdvdread \
--enable-hwaccel='h264_nvdec,hevc_nvdec,vp9_nvdec,av1_nvdec,mjpeg_nvdec,mpeg1_nvdec,mpeg2_nvdec,mpeg4_nvdec,vc1_nvdec,h264_vaapi,hevc_vaapi,h264_vulkan,hevc_vulkan,av1_vulkan' \
--enable-gnutls --enable-gmp --enable-gcrypt --enable-network \
--enable-libvpx --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis \
--enable-libfreetype --enable-libharfbuzz --enable-libfribidi --enable-hardcoded-tables \
--enable-ladspa --enable-lv2 --enable-librubberband --enable-libsoxr --enable-libbs2b --enable-libmysofa --enable-alsa --enable-libjack \
--enable-libx264 --enable-libx265 --enable-xlib --disable-sdl2 --disable-libpulse \
--enable-indev='v4l2,alsa,jack,lavfi,fbdev,xcbgrab,kmsgrab' \
--enable-outdev='v4l2,alsa,fbdev' \
--enable-protocol='async,bluray,cache,concat,crypto,data,ffrtmpcrypt,file,ftp,hls,http,https,httpproxy,icecast,md5,pipe,rtmp,rtmpe,rtmps,rtmpt,rtmpte,rtp,srtp,subfile,tcp,tls,udp,udplite,unix' \
--enable-demuxer='aac,ac3,adpcm_ima_qt,adpcm_ima_wav,adpcm_ms,aiff,asf,avi,dash,dts,dtshd,eac3,flac,flv,h264,hevc,hls,image2,matroska,mjpeg,mov,mp3,mpegps,mpegts,mpegvideo,null,ogg,opus,pcm_alaw,pcm_f32be,pcm_f32le,pcm_mulaw,pcm_s16be,pcm_s16le,pcm_s24be,pcm_s24le,pcm_s32be,pcm_s32le,rawvideo,rm,rtp,rtsp,srt,truehd,vobsub,wav,webm_dash_manifest,dvdnav,dvdread' \
--enable-muxer='aac,ac3,adpcm_ima_qt,adpcm_ima_wav,adpcm_ms,adts,av1,avi,dash,eac3,flac,flv,h264,hevc,hls,image2,matroska,mjpeg,mkv,mov,mp3,mp4,mpegts,null,ogg,opus,rtmp,rtp,rtsp,wav,dvdsub' \
--enable-decoder='h264,hevc,vp9,av1,mjpeg,mpeg1video,mpeg2video,mpeg4,h264_cuvid,hevc_cuvid,vp9_cuvid,av1_cuvid,mjpeg_cuvid,mpeg2_cuvid,mpeg4_cuvid,aac,mp3,flac,vorbis,opus,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be,pcm_s32le,pcm_s32be,pcm_f32le,pcm_f32be,pcm_s64le,pcm_s64be,pcm_f64le,pcm_f64be,pcm_u8,pcm_alaw,pcm_mulaw,rawvideo,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,adpcm_swf,ass,srt,dvdsub,dvbsub,mov_text' \
--enable-encoder='h264_nvenc,hevc_nvenc,av1_nvenc,h264_vaapi,hevc_vaapi,libfdk_aac,libmp3lame,libopus,libvorbis,libx264,libx265,ac3,eac3,flac,vorbis,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be,pcm_s32le,pcm_s32be,pcm_f32le,pcm_f32be,pcm_s64le,pcm_s64be,pcm_f64le,pcm_f64be,pcm_u8,pcm_alaw,pcm_mulaw,rawvideo,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,ass,srt,dvdsub,mov_text' \
--enable-filter='adelay,aecho,afifo,amix,anull,aresample,aformat,asetpts,asplit,colorspace,crystalizer,crop,drawtext,equalizer,firequalizer,format,format_cuda,fps,hwdownload,hwdownload_cuda,hwdownload_vaapi,hwmap,hwupload,hwupload_cuda,hwupload_vaapi,ladspa,libplacebo,loudnorm,lv2,null,nullsrc,overlay,palettegen,paletteuse,pan,rubberband,scale,scale_cuda,scale_npp,setpts,transpose,volume,yadif_cuda' \
--enable-parser='h264,hevc,vp9,av1,mjpeg,mpegvideo,mpeg4video,aac,mp3,flac,opus,vorbis,ac3,dca,adpcm_ms,adpcm_ima_wav,adpcm_ima_qt,dvdsub,dvd_pel' \
--enable-bsf='aac_adtstoasc,av1_metadata,extract_extradata,h264_metadata,h264_mp4toannexb,hevc_metadata,hevc_mp4toannexb,mjpeg2jpeg,mpeg4_unpack_bframes,null,opus_metadata,pcm_rechunk,vp9_metadata,vp9_superframe' \
--enable-asm --enable-x86asm --enable-inline-asm --enable-runtime-cpudetect --disable-indev=pulse --disable-outdev='pulse,xv' \
&& make -j$(nproc) && sudo make install && sudo ldconfig
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libavcode*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libavdevic*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libavfilte*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libavforma*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libavutil*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libpostpro*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libswresampl*
sudo strip --strip-unneeded /usr/lib/x86_64-linux-gnu/libswscale*