Crie uma versão gpu ffmpeg do hardware de imagem docker para acelerar o processamento de stream de vídeo - o caminho para os sonhos

Construir aceleração de hardware da versão docker ffmpeg gpu para processar dados de fluxo de vídeo

Escreva um Dockerfile com o seguinte conteúdo:

DA nvidia / cuda: 10.1-devel-ubuntu16.04

WORKDIR / tmp

ADICIONE build-ffmpeg.sh build-ffmpeg.sh #Esta
etapa é principalmente para puxar o código-fonte oficial quando é lento para adicionar o diretório a ele
#ADD ffmpeg ffmpeg
RUN chmod + x build-ffmpeg.sh
RUN apt- get update -y && apt-get install -y git build-essential yasm cmake libtool libc6 libc6-dev descompactar wget libnuma1 libnuma-dev frei0r-plugins-dev libgnutls28-dev libass-dev \
libmp3lame-dev libopencore-amrnb-dev libopencore- amrwb- dev libopus-dev librtmp-dev libsoxr-dev libspeex-dev libtheora-dev libvo-amrwbenc-dev libvorbis-dev libvpx-dev libwebp-dev \
libx264-dev libx265-dev libxvidcore-dev libopenjpeg-dev
RUN ./build- ffmpeg. sh

Escreva o script de construção, o conteúdo é o seguinte:
build-ffmpeg.sh

#! / bin / bash

#git clone https://github.com/ffmpeg/ffmpeg.git
# 国内 源
git clone https://gitee.com/mirrors/ffmpeg.git
cd ffmpeg
git checkout release / 3.4
./configure --enable-nonfree - -disable-shared --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags = -Ilocal / include --enable-gpl --enable-version3 --disable-debug - -dis
capaz-ffplay --disable-indev = sndio --disable-outdev = sndio --enable-fontconfig --enable-frei0r --enable-gnutls --enable-grey --enable-libass --enable-libfreetype --enable -libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libopenjpeg --enable-librtmp --enable-libsoxr --enable-libspeex --enable- libtheora --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --extra-cflags = -I / usr / local / cuda / include --extra-ldflags = -L / usr / local / cuda / lib64
make -j 8
make install


Crie a imagem:
docker build. -T ffmpeg-nvidia-gpu


Criar contêiner

docker run --name ffmpeg-gpu --runtime = nvidia -e NVIDIA_DRIVER_CAPABILITIES = computação, utilitário, vídeo -v $ (pwd): / data --net = host -i
td ffmpeg-nvidia-gpu / bin / bash

Entrar no teste do recipiente

docker exec -it ffmpeg-gpu / bin / bash

Comando de teste:

ffmpeg -y -vsync 0 -hwaccel cuvid -i "/tmp/content/input.mp4" -filtro: v hwupload_cuda, scale_npp = w = 576: h = 480: format = yuv420p: interp_algo = lanczos, hwdownload, format = yuv420p -c: uma cópia -c: v h264_nvenc -b: v 5M /tmp/content/output.mp4

ffmpeg -y -vsync 0 -hwaccel cuvid -rtsp_transport tcp -i "rtsp: // admin: [email protected]: 554 / streaming / channels / 1" -filtro: v hwupload_cuda, scale_npp = w = 576: h = 480 : format = yuv420p: interp_algo = lanczos, hwdownload, format = yuv420p -c: uma cópia -c: v h264_nvenc -b: v 5M output.mp4

#Procurei muitas informações. Basicamente, a Internet está processando vídeo. A saída é vídeo, mas a saída não foi encontrada. A aceleração de hardware precisa ser ativada. Como a saída aqui não especifica a codificação de aceleração de hardware, o parâmetro de decodificação - hwaccel cuvid é adicionado Irá relatar um erro

#Depois de ffmpeg -codecs | grep encode query, descobriu-se que a imagem não tem um codificador de aceleração de hardware compatível e só pode ser processada pela cpu

ffmpeg -c: v h264_cuvid -rtsp_transport tcp -i rtsp: // admin: [email protected]: 554 / streaming / channels / 1 -q: v 2 -f image2 -t 01:00:00 -r 5 ./ % 08d.jpg

#Conveniente para jogar em dispositivos móveis

ffmpeg -y -i example.mp4 -c: v h264_nvenc -c: a aac -hls_list_size 0 -hls_time 10 -hls_flags single_file -f hls 1.m3u8

 

 

Link de referência:

https://github.com/larry011/docker-ffmpeg-nvidia

https://www.jianshu.com/p/59da3d350488

https://www.jianshu.com/p/c3f4daf2aaa3

https://blog.csdn.net/weixin_34010566/article/details/88902875

https://blog.csdn.net/Q_AN1314/article/details/89435464

https://www.cnblogs.com/shenxingping/p/11387680.html

 

Acho que você gosta

Origin blog.csdn.net/qq_34777982/article/details/107685970
Recomendado
Clasificación