11name : Setup Node.js, pnpm and dependencies
2- description : Setup Node.js, pnpm, and dependencies
2+ description : Setup Node.js, pnpm and dependencies
33inputs :
44 token :
55 description : Github token
@@ -8,6 +8,171 @@ inputs:
88runs :
99 using : ' composite'
1010 steps :
11+ - name : Install ffmpeg
12+ if : runner.os == 'Linux'
13+ shell : ' bash'
14+ run : |
15+ sudo apt-get update -qq && sudo apt-get -y install \
16+ autoconf \
17+ automake \
18+ build-essential \
19+ cmake \
20+ git-core \
21+ libass-dev \
22+ libfreetype6-dev \
23+ libgnutls28-dev \
24+ libmp3lame-dev \
25+ libsdl2-dev \
26+ libtool \
27+ libva-dev \
28+ libvdpau-dev \
29+ libvorbis-dev \
30+ libxcb1-dev \
31+ libxcb-shm0-dev \
32+ libxcb-xfixes0-dev \
33+ meson \
34+ ninja-build \
35+ pkg-config \
36+ texinfo \
37+ wget \
38+ yasm \
39+ zlib1g-dev
40+
41+ # Build ffmpeg
42+ mkdir -p ~/ffmpeg_sources ~/bin
43+
44+ # Build NASM
45+ cd ~/ffmpeg_sources && \
46+ wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.bz2 && \
47+ tar xjvf nasm-2.16.01.tar.bz2 && \
48+ cd nasm-2.16.01 && \
49+ ./autogen.sh && \
50+ PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \
51+ make && \
52+ make install
53+
54+ # Build libx264
55+ cd ~/ffmpeg_sources && \
56+ git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git && \
57+ cd x264 && \
58+ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \
59+ PATH="$HOME/bin:$PATH" make && \
60+ make install
61+
62+ # Build x265
63+ sudo apt-get install libnuma-dev && \
64+ cd ~/ffmpeg_sources && \
65+ wget -O x265.tar.bz2 https://bitbucket.org/multicoreware/x265_git/get/master.tar.bz2 && \
66+ tar xjvf x265.tar.bz2 && \
67+ cd multicoreware*/build/linux && \
68+ PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
69+ PATH="$HOME/bin:$PATH" make && \
70+ make install
71+
72+ # Build libvpx
73+ cd ~/ffmpeg_sources && \
74+ git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git && \
75+ cd libvpx && \
76+ PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm && \
77+ PATH="$HOME/bin:$PATH" make && \
78+ make install
79+
80+ # Build libfdk-aac
81+ cd ~/ffmpeg_sources && \
82+ git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \
83+ cd fdk-aac && \
84+ autoreconf -fiv && \
85+ ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
86+ make && \
87+ make install
88+
89+ # Build libopus
90+ cd ~/ffmpeg_sources && \
91+ git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
92+ cd opus && \
93+ ./autogen.sh && \
94+ ./configure --prefix="$HOME/ffmpeg_build" --disable-shared && \
95+ make && \
96+ make install
97+
98+ # Build libaom
99+ cd ~/ffmpeg_sources && \
100+ git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
101+ mkdir -p aom_build && \
102+ cd aom_build && \
103+ PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_TESTS=OFF -DENABLE_NASM=on ../aom && \
104+ PATH="$HOME/bin:$PATH" make && \
105+ make install
106+
107+ # Build SVT-AV1
108+ cd ~/ffmpeg_sources && \
109+ git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git && \
110+ mkdir -p SVT-AV1/build && \
111+ cd SVT-AV1/build && \
112+ PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DCMAKE_BUILD_TYPE=Release -DBUILD_DEC=OFF -DBUILD_SHARED_LIBS=OFF .. && \
113+ PATH="$HOME/bin:$PATH" make && \
114+ make install
115+
116+ # Install meson
117+ sudo apt-get install python3-pip && \
118+ pip3 install --user meson
119+
120+ # Build dav1d
121+ cd ~/ffmpeg_sources && \
122+ git -C dav1d pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/dav1d.git && \
123+ mkdir -p dav1d/build && \
124+ cd dav1d/build && \
125+ meson setup -Denable_tools=false -Denable_tests=false --default-library=static .. --prefix "$HOME/ffmpeg_build" --libdir="$HOME/ffmpeg_build/lib" && \
126+ ninja && \
127+ ninja install
128+
129+ # Build vmaf
130+ cd ~/ffmpeg_sources && \
131+ wget https://github.com/Netflix/vmaf/archive/v3.0.0.tar.gz && \
132+ tar xvf v3.0.0.tar.gz && \
133+ mkdir -p vmaf-3.0.0/libvmaf/build &&\
134+ cd vmaf-3.0.0/libvmaf/build && \
135+ meson setup -Denable_tests=false -Denable_docs=false --buildtype=release --default-library=static .. --prefix "$HOME/ffmpeg_build" --bindir="$HOME/bin" --libdir="$HOME/ffmpeg_build/lib" && \
136+ ninja && \
137+ ninja install
138+
139+ # Build ffmpeg
140+ cd ~/ffmpeg_sources && \
141+ wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
142+ tar xjvf ffmpeg-snapshot.tar.bz2 && \
143+ cd ffmpeg && \
144+ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
145+ --prefix="$HOME/ffmpeg_build" \
146+ --pkg-config-flags="--static" \
147+ --extra-cflags="-I$HOME/ffmpeg_build/include" \
148+ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
149+ --extra-libs="-lpthread -lm" \
150+ --ld="g++" \
151+ --bindir="$HOME/bin" \
152+ --enable-gpl \
153+ --enable-gnutls \
154+ --enable-libaom \
155+ --enable-libass \
156+ --enable-libfdk-aac \
157+ --enable-libfreetype \
158+ --enable-libmp3lame \
159+ --enable-libopus \
160+ --enable-libsvtav1 \
161+ --enable-libdav1d \
162+ --enable-libvorbis \
163+ --enable-libvpx \
164+ --enable-libx264 \
165+ --enable-libx265 \
166+ --enable-nonfree && \
167+ PATH="$HOME/bin:$PATH" make && \
168+ make install && \
169+ hash -r
170+
171+ # Add ffmpeg to PATH
172+ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.profile
173+ source ~/.profile
174+
175+
11176 - name : Install pnpm
12177 uses : pnpm/action-setup@v4
13178
0 commit comments