Spaces:
Paused
Paused
File size: 3,801 Bytes
16ae242 302ebcd 8c2dbb7 16ae242 302ebcd 16ae242 8c2dbb7 16ae242 99b0174 8c2dbb7 4443159 16ae242 6badab8 99b0174 8c2dbb7 16ae242 8c2dbb7 16ae242 8c2dbb7 16ae242 8c2dbb7 6badab8 16ae242 8c2dbb7 16ae242 d1f8dcc 4443159 d1f8dcc a5055b0 d1f8dcc 16ae242 | 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 | # ── Stage 1: compilação (imagem devel com headers CUDA) ───────
FROM nvidia/cuda:12.4.1-devel-ubuntu22.04 AS builder
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential nasm yasm bzip2 git wget \
libfdk-aac-dev libx264-dev libx265-dev libnuma-dev zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
# nv-codec-headers (necessário para h264_nvenc / hevc_nvenc / cuvid)
RUN git clone --depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git /tmp/nv-codec-headers \
&& make -C /tmp/nv-codec-headers install \
&& rm -rf /tmp/nv-codec-headers
# Compila ffmpeg 7.1.1 com libfdk_aac + NVENC
RUN wget -q -O /tmp/ffmpeg.tar.bz2 https://ffmpeg.org/releases/ffmpeg-7.1.1.tar.bz2 \
&& tar xf /tmp/ffmpeg.tar.bz2 -C /tmp \
&& rm /tmp/ffmpeg.tar.bz2 \
&& cd /tmp/ffmpeg-7.1.1 \
&& ./configure \
--prefix=/usr/local \
--enable-gpl \
--enable-nonfree \
--disable-everything \
--enable-encoder=libx264,libx265,libfdk_aac,aac,h264_nvenc,hevc_nvenc \
--enable-decoder=h264,hevc,vp9,vp9_cuvid,aac,mp3,ac3,eac3,opus,vorbis,flac,pcm_s16le,pcm_s16be,png,mjpeg \
--enable-hwaccel=h264_nvdec,hevc_nvdec,vp9_nvdec \
--enable-demuxer=mov,mp4,matroska,avi,flv,mpegts,wav,mp3,aac,flac,image2 \
--enable-muxer=mp4,matroska,null \
--enable-filter=loudnorm,volume,aresample,scale,pad,mpdecimate,fps,overlay,crop,format,null \
--enable-protocol=file,pipe \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk-aac \
--enable-nvenc \
--enable-nvdec \
--enable-cuda \
--enable-zlib \
--enable-cuvid \
--extra-cflags="-O2 -pipe -I/usr/local/cuda/include" \
--extra-ldflags="-s -L/usr/local/cuda/lib64" \
--disable-doc \
--disable-htmlpages \
--disable-manpages \
--disable-podpages \
--disable-txtpages \
&& make -j"$(nproc)" \
&& make install \
&& rm -rf /tmp/ffmpeg-7.1.1
# ── Stage 2: imagem final (runtime leve) ──────────────────────
FROM nvidia/cuda:12.4.1-runtime-ubuntu22.04
ENV DEBIAN_FRONTEND=noninteractive
# Só as libs de runtime necessárias
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip ca-certificates \
libfdk-aac2 libx264-163 libx265-199 libnuma1 zlib1g \
&& rm -rf /var/lib/apt/lists/*
# Copia apenas os binários compilados do stage 1
COPY --from=builder /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg
COPY --from=builder /usr/local/bin/ffprobe /usr/local/bin/ffprobe
# ── Valida que todos os filtros, decoders e demuxers necessários estão presentes ──
RUN set -e; \
echo "--- versão ---"; ffmpeg -version | head -1; \
echo "--- encoders ---"; \
for c in libx264 libx265 h264_nvenc hevc_nvenc libfdk_aac; do \
ffmpeg -encoders 2>/dev/null | grep -q " $c " || (echo "❌ encoder ausente: $c" && exit 1); \
echo " ✅ encoder $c"; \
done; \
echo "--- decoders ---"; \
for c in h264 hevc vp9 aac mp3 png mjpeg; do \
ffmpeg -decoders 2>/dev/null | grep -q " $c " || (echo "❌ decoder ausente: $c" && exit 1); \
echo " ✅ decoder $c"; \
done; \
echo "--- filtros ---"; \
for f in scale crop fps mpdecimate overlay format loudnorm aresample; do \
ffmpeg -filters 2>/dev/null | grep -q " $f " || (echo "❌ filtro ausente: $f" && exit 1); \
echo " ✅ filtro $f"; \
done; \
echo "✅ ffmpeg OK — todos os componentes presentes"
WORKDIR /app
COPY app.py .
RUN pip3 install --no-cache-dir gradio
EXPOSE 7860
ENV PYTHONUNBUFFERED=1
CMD ["python3", "app.py"]
|