1. Tirez une image de menu fixe FFmpeg.
docker pull jrottenberg/ffmpeg
2. Créez un script de démarrage start-ffmpeg-all.sh, car j'ai plusieurs caméras, donc je dois démarrer plusieurs conteneurs.
#! /bin/bash
for((i=2;$i<=31;i++))
do
if (( ($i >= 9 && $i <= 12) || $i == 22 ))
then
echo "192.168.0.$i is not camera IP"
else
docker stop ffmpeg$i && docker rm ffmpeg$i
docker run -d --privileged=true -v /root/preview:/tmp/workdir --restart=always --name="ffmpeg$i" jrottenberg/ffmpeg -stats -i "rtsp://admin:[email protected].$i:554/h264/ch1/sub/av_stream" -vcodec libx264 -an -f flv rtmp://{ip}:12005/hls/movie$i -f image2 -y -update 1 -r 0.0001 preview$i.jpg
fi
done
主要 命令 是 : ffmpeg -i "rtsp: // admin: [email protected].$i: 554 / h264 / ch1 / sub / av_stream" -vcodec libx264 -an -f flv rtmp: // {ip}: 12005 / hls / movie $ i -f image2 -y -update 1 -r 0.2 aperçu $ i.jpg
Expliquez ces paramètres:
-i flux d'entrée, adresse de flux de caméra
-vcodec spécifie le codec vidéo
-an n'obtient pas de son, économise les ressources du processeur
-f format de sortie, faites attention aux deux ci-dessus, un push flv, une capture d'écran image2
-y Écraser les images portant le même nom
-mise à jour mise à jour
-r La fréquence des captures d'écran chronométrées, quelques captures d'écran en 1 seconde, 0,2 signifie une capture d'écran en 5 secondes
3. Tirez une image nginx
docker pull nginx
4. Créez le script de démarrage start-nginx.sh
#!/bin/bash
docker stop nginx && docker rm nginx
sleep 3s
docker run --privileged=true -v /root/preview:/usr/share/nginx/html --restart=always -d -p 8010:80 -p 443:443 --name nginx nginx
~
5. Notez que le répertoire monté / root / preview est le répertoire dans lequel les captures d'écran du conteneur ffmpeg sont enregistrées, donc ça va.