-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathffmpeg-build
More file actions
95 lines (74 loc) · 3.57 KB
/
Copy pathffmpeg-build
File metadata and controls
95 lines (74 loc) · 3.57 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
[Источник]
git clone https://github.com/FFmpeg/FFmpeg.git
git checkout -t origin/release/7.1
[required]
sudo apt-get install yasm /* флаг по возможности не использовать --allow-unauthenticated */
sudo apt-get install chrpath libv4l-dev libssl-dev libnuma-dev
[recommended]
sudo apt-get install libx264-dev libx265-dev
[Дополнительный репозиторий для сборки с Nvidia CUDA (выполнить единоразово)]
git clone ssh://git@gitlab.tochka.ai:16822/nvidia/nv-codec-headers.git
Оригинальный репозиторий: https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
Для версии CUDA 12.x перейти на коммит 9934f17
Выполнить: sudo make install (см. инструкцию ниже)
[Инструкция по сборке с Nvidia CUDA]
https://docs.nvidia.com/video-technologies/video-codec-sdk/12.0/ffmpeg-with-nvidia-gpu/index.html
cd ~/ffmpeg
git checkout -f && git clean -dfx
[Выполнить для сборки с GPU]
export CUDA_VERSION=12.4; \
echo "CUDA_VERSION: $CUDA_VERSION" \
export CUDA_VERSION=12.9; \
echo "CUDA_VERSION: $CUDA_VERSION" \
FFMPEG_VERSION=7.1; \
FFMPEG_VERSION=${FFMPEG_VERSION}${CUDA_VERSION:+-cuda$CUDA_VERSION}
export FFMPEG_PATH=/opt/ffmpeg/${FFMPEG_VERSION}; \
echo "FFMPEG_VERSION: $FFMPEG_VERSION"; \
echo "FFMPEG_PATH: $FFMPEG_PATH" \
sed -r "s|enabled rpath \&\& add_ldexeflags.*|enabled rpath \&\& add_ldexeflags -Wl,-z,origin \&\& add_ldexeflags -Wl,-rpath,/opt/tochkacv/lib/ffmpeg/${FFMPEG_VERSION} \&\& add_ldexeflags -Wl,-rpath,AORIGIN/../lib|" \
-i configure; \
sed -r "/enabled rpath \&\& add_ldexeflags.*/a enabled rpath \&\& add_ldsoflags -Wl,-z,origin \&\& add_ldsoflags -Wl,-rpath,/opt/tochkacv/lib/ffmpeg/${FFMPEG_VERSION} \&\& add_ldsoflags -Wl,-rpath,AORIGIN" \
-i configure; \
sed -r "s|.*enabled rpath \&\& echo.*|rpath=-Wl,-z,origin -Wl,-rpath,/opt/tochkacv/lib/ffmpeg/${FFMPEG_VERSION} -Wl,-rpath,\\\$ORIGIN|" \
-i configure \
[Сборка с CPU]
./configure \
--prefix=$FFMPEG_PATH \
--disable-doc \
--disable-static \
--enable-shared \
--enable-rpath \
--enable-pic \
--enable-openssl \
--extra-ldexeflags=-pie \
[Сборка с GPU]
./configure \
--prefix=$FFMPEG_PATH \
--enable-nonfree \
--disable-doc \
--disable-static \
--enable-shared \
--enable-rpath \
--enable-pic \
--enable-openssl \
--extra-ldexeflags=-pie \
--enable-libnpp \
--enable-cuda-nvcc \
--nvcc=/usr/local/cuda-${CUDA_VERSION}/bin/nvcc \
--nvccflags="-gencode arch=compute_75,code=sm_75 -O2" \
--extra-cflags=-I/usr/local/cuda-${CUDA_VERSION}/include \
--extra-ldflags=-L/usr/local/cuda-${CUDA_VERSION}/lib64 \
[Для сборки с программными кодеками h264, h265]
--enable-gpl \
--enable-libx264 \
--enable-libx265 \
[Для сборки со сторонним компилятором добавить]
--cc=/opt/gcc/8.4.0/bin/gcc \
--cxx=/opt/gcc/8.4.0/bin/g++ \
make -j$(nproc) && sudo make install
sudo find ${FFMPEG_PATH}/lib -maxdepth 1 -type f -exec chrpath -r "/opt/tochkacv/lib/ffmpeg/${FFMPEG_VERSION}:\$ORIGIN" {} \;; \
sudo find ${FFMPEG_PATH}/bin -maxdepth 1 -type f -exec chrpath -r "/opt/tochkacv/lib/ffmpeg/${FFMPEG_VERSION}:\$ORIGIN/../lib" {} \;; \
sudo find ${FFMPEG_PATH}/lib -maxdepth 1 -type f -exec chmod 644 {} \;
for f in $(ls -1 ${FFMPEG_PATH}/lib/*.so*); do echo $f; readelf -a $f | grep '$ORIGIN'; done; \
for f in $(ls -1 ${FFMPEG_PATH}/bin/*); do echo $f; readelf -a $f | grep '$ORIGIN'; done \
git checkout -f && git clean -dfx > /dev/null