web-dev-qa-db-fra.com

Enregistrer le flux RTSP continu dans des fichiers mp4 de 5 à 10 minutes

Comment conserver le flux (protocole rtsp, codec h264) dans un fichier (conteneur mp4)? Autrement dit, lors de la saisie d'un flux sans fin (avec caméra CCTV) et des fichiers de sortie au format mp4 de 5 à 10 minutes de temps d'enregistrement.

Système d'exploitation: debian, ubuntu Logiciel: vlc, ffmpeg (avconv)

Actuellement, ce schéma est utilisé:

cvlc rtsp://admin:[email protected]:554/ch1-s1 --sout=file/ts:stream.ts
ffmpeg -i stream.ts -vcodec copy -f mp4 stream.mp4

Mais il ne peut pas enregistrer de vidéo en continu (entre les redémarrages, vlc perd environ 10 secondes de vidéo en direct).

17
Ruslan Sharipov

Voir cette question et répondre à la panne du serveur. En bref, changez d'outil. avconv fera ce que vous voulez. (ffmpeg est devenu avconv.)

La fonctionnalité que vous recherchez est appelée segmentation. Votre ligne de commande ressemblerait à ceci:

avconv -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-%03d.mp4"

24
Alexander Garden

La solution Alexander Garden fonctionne pour ffmpep en utilisant la version ci-dessous. Remplacez avconv par ffmpeg.

./ffmpeg -i rtsp: //10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-% 03d.mp4"

J'inclus cet en-tête en raison de la confusion FFmpeg sur les versions, du schisme ubuntu et du développement rapide.

ffmpeg version N-80023-Gd55568d Copyright (c) 2000-2016 les développeurs FFmpeg construits avec la configuration gcc 4.8 (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.1): --prefix =/home/rhinchley/q10/ffmpeg_build --pkg -config-flags = - statique --extra-cflags = -I/home/rhinchley/q10/ffmpeg_build/include --extra-ldflags = -L/home/rhinchley/q10/ffmpeg_build/lib --bindir =/home/rhinchley/q10/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis - enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 55. 24.100/55. 24.100 libavcodec 57. 42.100/57. 42.100 libavformat 57. 36.100/57. 36.100 libavdevice 57. 0.101/57. 0.101 libavfilter 6. 45.100/6. 45.100 libswscale 4. 1.100/4. 1.100 libswresample 2. 0.101/2. 0.101 libpostproc 54. 0.100/54. 0.100

9
Ron Hinchley

Travail d'équipe: Divisez la source vidéo et deux processus alternent l'enregistrement de la période. Vous voudrez tester à quel point le temps de démarrage est variable et à quel point il est variable. Vous souhaiterez peut-être définir la priorité des processus en temps réel pour réduire la variance de l'heure de début. Il y aura un certain chevauchement, mais cela semble être correct pour votre application d'après ce que j'en déduis. Exemple:

p1: sRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRR...
p2: wwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwww...

                    time -->

s: startup
R: running
w: wait
0
Stu Thompson