stream webcam local

Le
Christophe PEREZ
Bonjour,

Juste à des fins très personnelles, je streame le flux d'une webcam (et
l'audio du micro intégré) sur une Gentoo.
Vu que c'est quand même quelque chose que je n'utilise vraiment pas
souvent, je ne me suis pas rendu compte qu'au fil des mises à jour (et je
ne sais pas depuis laquelle ni depuis quand) le système en place ne
fonctionne plus.
A l'époque, j'avais passé pas mal de temps à trouver le meilleur moyen (à
ma disposition) pour le faire, et j'en étais arrivé à :
/usr/bin/ffserver > /var/log/ffserver.log
puis
/usr/bin/ffmpeg -r 5 -s 640x480 -f video4linux2 -i /dev/video0 -f alsa -
ac 1 -i default http://localhost:8090/webcam.ffm

avec media-video/ffmpeg-1.0.7

Lorsque je lance tout ça, et qu'à distance je tente de consulter par :
mplayer http://192.168.1.202:8090/webcam.ffm

j'obtiens sur ce poste distant :
MPlayer 1.1-4.6.3 (C) 2000-2012 MPlayer Team
Impossible d'ouvrir périphérique manette de jeux /dev/input/js0 : No such
file or directory
Impossible d'initier manette entrée
Lecture de http://192.168.1.202:8090/webcam.ffm
Connexion au serveur 192.168.1.202[192.168.1.202] : 8090

Server returned 404: Not Found
STREAM_ASF, URL : http://192.168.1.202:8090/webcam.ffm
Connexion au serveur 192.168.1.202[192.168.1.202] : 8090

Retour de serveur 404:Not Found
Échec analyse entête
Échec, abandon
Connexion au serveur 192.168.1.202[192.168.1.202] : 8090

Server returned 404: Not Found
No stream found to handle url http://192.168.1.202:8090/webcam.ffm


Sortie (Fin du fichier)


Sur le poste avec la webcam, le ffmpeg me donne :
ffmpeg version 1.0.7 Copyright (c) 2000-2013 the FFmpeg developers
built on Aug 4 2013 22:05:48 with gcc 4.6.3 (Gentoo 4.6.3 p1.13,
pie-0.5.2)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
--mandir=/usr/share/man
--enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++
--ar=x86_64-pc-linux-gnu-ar --optflags='-march=nocona -O2 -pipe' --extra-
cflags='-march=nocona
-O2 -pipe' --extra-cxxflags='-march=nocona -O2 -pipe' --disable-static --
enable-gpl
--enable-version3 --enable-postproc --enable-avfilter --enable-avresample
--disable-stripping
--disable-debug --disable-doc --disable-vaapi --disable-vdpau --disable-
runtime-cpudetect
--enable-libmp3lame --enable-libvo-aacenc --enable-libvo-amrwbenc --
enable-libtheora
--enable-libx264 --enable-libxvid --enable-libfaac --enable-nonfree --
enable-openal
--disable-indev=oss --disable-indev=jack --enable-x11grab --disable-
outdev=oss
--enable-libfreetype --enable-libopencore-amrwb --enable-libopencore-amrnb
--enable-libopus
--enable-libspeex --enable-libvorbis --disable-amd3dnow --disable-
amd3dnowext --disable-altivec
--disable-avx --disable-mmxext --disable-ssse3 --dis
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 59.100 / 54. 59.100
libavformat 54. 29.104 / 54. 29.104
libavdevice 54. 2.101 / 54. 2.101
libavfilter 3. 17.100 / 3. 17.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
[video4linux2,v4l2 @ 0x632250] Estimating duration from bitrate, this may
be
inaccurate
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 12064.465459, bitrate: 24576 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480,
24576 kb/s, 5 tbr, 1000k tbn, 5 tbc
[alsa @ 0x632c80] Estimating duration from bitrate, this may be inaccurate
Guessed Channel Layout for Input Stream #1.0 : mono
Input #1, alsa, from 'default':
Duration: N/A, start: 1378388204.323280, bitrate: 768 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, mono, s16, 768 kb/s
[tcp @ 0x672280] TCP connection to localhost:8090 failed: Connection
refused
[tcp @ 0x6724f0] TCP connection to localhost:8090 failed: Connection
refused
Output #0, ffm, to 'http://localhost:8090/webcam.ffm':
Metadata:
encoder : Lavf54.29.104
Stream #0:0: Audio: mp3, 16000 Hz, mono, s32, 32 kb/s
Stream #0:1: Video: msmpeg4v3, yuv420p, 640x480, q=1-10, 200 kb/s,
1000k tbn, 5 tbc
Stream mapping:
Stream #1:0 -> #0:0 (pcm_s16le -> libmp3lame)
Stream #0:0 -> #0:1 (rawvideo -> msmpeg4)
Press [q] to stop, [?] for help
[msmpeg4 @ 0x63dbb0] rc buffer underflow
Last message repeated 2 times
frame= 4 fps=0.0 q=3.0 size= 100kB time:00:00.80
bitrate24.0kbits/src buffer underflow
[msmpeg4 @ 0x63dbb0] rc buffer underflow
frame= 6 fps=6.0 q=2.0 size= 140kB time:00:01.20 bitrate=
955.7kbits/src buffer underflow
frame= 8 fps=5.3 q=8.2 size= 184kB time:00:01.60 bitrate=
942.1kbits/s
frame= 10 fps=5.0 q=6.3 size= 208kB time:00:02.00 bitrate=
852.0kbits/s
[ j'en saute]
frame= 113 fps=5.0 q=4.8 size= 820kB time:00:22.68 bitrate=
296.1kbits/s
frame= 116 fps=5.0 q=6.7 size= 832kB time:00:23.20 bitrate=
293.8kbits/s
frame= 118 fps=5.0 q=6.4 size= 840kB time:00:23.65 bitrate=
290.9kbits/s
Erreur de segmentation

Là c'est ffserver qui a planté, et ses logs donnent :
Thu Sep 5 06:16:33 2013 FFserver started.
Thu Sep 5 09:36:44 2013 127.0.0.1 - - [GET] "/webcam.ffm HTTP/1.1" 200
4175
Thu Sep 5 09:37:08 2013 127.0.0.1 - - [POST] "/webcam.ffm HTTP/1.1" 200
860160
Thu Sep 5 09:37:15 2013 File '/webcam.ffm' not found
Thu Sep 5 09:37:15 2013 192.168.0.2 - - [GET] "/webcam.ffm HTTP/1.0" 404
150
Thu Sep 5 09:37:15 2013 File '/webcam.ffm' not found
Thu Sep 5 09:37:15 2013 192.168.0.2 - - [GET] "/webcam.ffm HTTP/1.0" 404
150
Thu Sep 5 09:37:15 2013 File '/webcam.ffm' not found
Thu Sep 5 09:37:15 2013 192.168.0.2 - - [GET] "/webcam.ffm HTTP/1.0" 404
150
Thu Sep 5 09:38:11 2013 192.168.0.2 - - [GET] "/webcam.asf HTTP/1.1" 200
123
Thu Sep 5 09:38:12 2013 File '/favicon.ico' not found
Thu Sep 5 09:38:12 2013 192.168.0.2 - - [GET] "/favicon.ico HTTP/1.1"
404 151
Thu Sep 5 09:38:12 2013 File '/favicon.ico' not found
Thu Sep 5 09:38:12 2013 192.168.0.2 - - [GET] "/favicon.ico HTTP/1.1"
404 151
Thu Sep 5 09:38:13 2013 Codec for stream 0 does not use global headers
but container format requires global headers
Thu Sep 5 09:38:13 2013 Codec for stream 1 does not use global headers
but container format requires global headers
Thu Sep 5 09:38:13 2013 192.168.0.2 - - [GET] "/webcam.asf HTTP/1.0" 200
1012
Thu Sep 5 09:38:13 2013 Codec for stream 0 does not use global headers
but container format requires global headers
Thu Sep 5 09:38:13 2013 Codec for stream 1 does not use global headers
but container format requires global headers
Thu Sep 5 09:38:32 2013 127.0.0.1 - - [GET] "/webcam.ffm HTTP/1.1" 200
4175
Thu Sep 5 09:38:32 2013 Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 23367 >= -69
Thu Sep 5 09:38:32 2013 Error writing frame to output
Thu Sep 5 09:38:32 2013 Application provided invalid, non monotonically
increasing dts to muxer in stream 0: 23367 >= -33
Thu Sep 5 09:38:32 2013 Error writing frame to output

J'avoue que je n'ai pas trop envie de repartir dans une recherche de
solution, qu'il faudra adapter, mettre au point etc et qu'il
m'arrangerait vraiment beaucoup si l'un de vous pouvait avoir une idée
sur la provenance de la chose.

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
  • Google déploie pour son réseau social Google+, mais aussi Google Maps et autres, une ...
  • Capcom a diffusé de nouveaux extraits de son prochain survival horror à venir sur PC et ...
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #25637412
Christophe PEREZ , dans le message écrit :
Juste à des fins très personnelles, je streame le flux d'une webcam (et
l'audio du micro intégré) sur une Gentoo.



Tu peux indiquer ce que tu veux faire avec le flux exactement ?

/usr/bin/ffserver > /var/log/ffserver.log
puis
/usr/bin/ffmpeg -r 5 -s 640x480 -f video4linux2 -i /dev/video0 -f alsa -
ac 1 -i default http://localhost:8090/webcam.ffm



Il faudrait montrer ta config ffserver pour pouvoir examiner le problème.

Lorsque je lance tout ça, et qu'à distance je tente de consulter par :
mplayer http://192.168.1.202:8090/webcam.ffm

No stream found to handle url http://192.168.1.202:8090/webcam.ffm



Là, il me semble que c'est normal : webcam.ffm sert à ffserver pour recevoir
le flux, pas pour le distribuer.

Erreur de segmentation



Ça, ce n'est pas normal du tout. Est-ce que tu obtiens la même chose en
sauvant dans un fichier avec les mêmes paramètres ?
Doug713705
Le #25638002
Le 05-09-2013, Christophe PEREZ nous expliquait dans fr.comp.os.linux.configuration :
Bonjour,

Juste à des fins très personnelles, je streame le flux d'une webcam (et
l'audio du micro intégré) sur une Gentoo.
Vu que c'est quand même quelque chose que je n'utilise vraiment pas
souvent, je ne me suis pas rendu compte qu'au fil des mises à jour (et je
ne sais pas depuis laquelle ni depuis quand) le système en place ne
fonctionne plus.



[SNIP détails]

J'avoue que je n'ai pas trop envie de repartir dans une recherche de
solution, qu'il faudra adapter, mettre au point etc... et qu'il
m'arrangerait vraiment beaucoup si l'un de vous pouvait avoir une idée
sur la provenance de la chose.



Au cas où il y Motion :
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionFeatureList

Très bon et très complet mais un poil complexe.

--
Doug - Linux user #307925 - Slackware64 roulaize ;-)
Without freedom of choice there is no creativity.
-- Kirk, "The return of the Archons", stardate 3157.4
Christophe PEREZ
Le #25638372
Le Thu, 05 Sep 2013 15:06:36 +0000, Nicolas George a écrit :

Tu peux indiquer ce que tu veux faire avec le flux exactement ?



Oh, rien de spécial. Juste visualiser et entendre à distance ce qui se
passe devant ce poste, à partir d'un voire exceptionnellement 2 postes.
Vraiment rien du tout de farfelu.

Il faudrait montrer ta config ffserver pour pouvoir examiner le
problème.



Ah oui, je savais bien que j'avais oublié quelque chose...
/etc/ffserver.conf :
Port 8090
BindAddress 0.0.0.0
MaxClients 4
MaxBandwidth 10000
CustomLog -
File /tmp/webcam.ffm
FileMaxSize 200k
ACL allow 127.0.0.1
</Feed>
Feed webcam.ffm
Format asf
VideoCodec msmpeg4
VideoFrameRate 2
VideoBufferSize 40
VideoBitRate 200
VideoQMin 1
VideoQMax 10
VideoSize 640x480
PreRoll 0
AudioCodec libmp3lame
AudioBitRate 32
AudioChannels 1
AudioSampleRate 16000
</Stream>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
FaviconURL http://pond1.gladstonefamily.net:8080/favicon.ico
</Stream>
URL http://www.ffmpeg.org/
</Redirect>


Lorsque je lance tout ça, et qu'à distance je tente de consulter par :
mplayer http://192.168.1.202:8090/webcam.ffm



No stream found to handle url http://192.168.1.202:8090/webcam.ffm



Là, il me semble que c'est normal : webcam.ffm sert à ffserver pour
recevoir le flux, pas pour le distribuer.



Quel con je fais. C'est webcam.asf évidemment.
Ça fonctionne évidemment beaucoup mieux comme ça, même si j'ai encore le
segfault sur ffmpeg de façon relativement aléatoire.
http://pastebin.com/WBvkiBDB
mais ça peut aussi arriver super tôt :
Press [q] to stop, [?] for help
frame= 3 fps=0.0 q=2.0 size= 12kB time:00:00.60 bitrate=
163.8kbits/sErreur de segmentation

Par contre, si je lance la lecture du flux avec mplayer avant le segfault,
il me semble que ça plante beaucoup plus tard (pour le peu de stats que
je peux établir)

Il faut aussi noter qu'en fait ffserver ne plante pas (plus ?). Juste le
process ffmpeg qui segfault.

Erreur de segmentation



Ça, ce n'est pas normal du tout. Est-ce que tu obtiens la même chose en
sauvant dans un fichier avec les mêmes paramètres ?



en sauvant quoi ? La sortie de ffmpeg ?

Merci pour votre aide, sachant toutefois que tout ceci na vraiment rien
de vital ;)
Christophe PEREZ
Le #25638362
Le Fri, 06 Sep 2013 06:41:32 +1100, Doug713705 a écrit :

Au cas où il y Motion :
http://www.lavrsen.dk/foswiki/bin/view/Motion/MotionFeatureList

Très bon et très complet mais un poil complexe.



Merci pour l'info. Il me semble toutefois que je l'avais testé à
l'époque, et que je l'avais trouvé lourd pour un truc qui tournait en
permanence. La machine n'est pas vraiment puissante.
Je crois que j'avais aussi testé mjpg-streamer qui n'était pas mal.
Mais je ne me souviens pas non plus si à l'époque j'avais déjà la volonté
de streamer aussi le son, et si les 2 le faisaient.
Nicolas George
Le #25640312
Christophe PEREZ , dans le message écrit :
Oh, rien de spécial. Juste visualiser et entendre à distance ce qui se
passe devant ce poste, à partir d'un voire exceptionnellement 2 postes.
Vraiment rien du tout de farfelu.



Ok.

Ah oui, je savais bien que j'avais oublié quelque chose...
/etc/ffserver.conf :



Avec à peu près la même config (le binaire de debug que j'utilise est
compilé sans lame, donc libmp3lame -> mp2), ça marche chez moi.

Ça fonctionne évidemment beaucoup mieux comme ça, même si j'ai encore le
segfault sur ffmpeg de façon relativement aléatoire.



Autant ffserver qui crashe ce ne serait pas étonnant, parce que personne ne
s'occupe de ffserver, autant ffmpeg lui-même ce n'est vraiment pas normal.

en sauvant quoi ? La sortie de ffmpeg ?



En sauvant le flux vidéo au lieu de l'envoyer à ffserver. En gros :

ffmpeg ... -c:v msmpeg4v3 -c:a libmp3lame file.ffm

Le but, c'est d'arriver à reproduire le crash de manière à le débugger, en
éliminant le plus de variables possible.

Enfin, pour commencer, je te conseillerais de prendre un snapshot Git de
ffmpeg, et de le compiler en gardant ffmpeg_g (la version avec les symboles
de débuggage), pour avoir un coredump utilisable.
Christophe PEREZ
Le #25640852
Le Fri, 06 Sep 2013 15:21:40 +0000, Nicolas George a écrit :

En sauvant le flux vidéo au lieu de l'envoyer à ffserver. En gros :

ffmpeg ... -c:v msmpeg4v3 -c:a libmp3lame file.ffm

Le but, c'est d'arriver à reproduire le crash de manière à le débugger,
en éliminant le plus de variables possible.



Oui compris.

Enfin, pour commencer, je te conseillerais de prendre un snapshot Git de
ffmpeg, et de le compiler en gardant ffmpeg_g (la version avec les
symboles de débuggage), pour avoir un coredump utilisable.



Ah ben effectivement, j'aurais du penser à ça aussi, et vérifier
l'ancienneté de la version gentoo stable qu'est la 1.0.7.

Un equery l -p ffmpeg m'indique qu'il existe des version 1.2.2 et 1.2.3
voire même une 2.0.1 et un version "cvs".

Ayant un peu peur que toute ma ligne de commande soit à revoir avec la
2.0.1, j'ai installé (par gentoo) la 1.2.3, et là, ça fonctionne sans
plantage sans rien changer après un test de 10mn.

Seul défaut, le NoDaemon de la config ffserver.conf ne semble plus pris
en compte, ffserver ne démarrant plus en mode daemon, et je ne trouve pas
ce qu'il faut faire pour y changer quelque chose (à part le &). Donc si
tu sais, je suis preneur.

Je pense qu'ayant ça qui fonctionne comme je veux maintenant, je vais
sans doute tester la 2.0.1 pour voir si ma syntaxe est encore valide.

Merci encore.
Nicolas George
Le #25641222
Christophe PEREZ , dans le message écrit :
Seul défaut, le NoDaemon de la config ffserver.conf ne semble plus pris
en compte, ffserver ne démarrant plus en mode daemon, et je ne trouve pas
ce qu'il faut faire pour y changer quelque chose (à part le &). Donc si
tu sais, je suis preneur.



Je ne comprends pas bien : NoDaemon est maintenant le seul mode possible. Si
tu l'avais dans ta config, ça ne change rien pour toi.
Christophe PEREZ
Le #25642302
Le Sat, 07 Sep 2013 08:03:06 +0000, Nicolas George a écrit :

Je ne comprends pas bien : NoDaemon est maintenant le seul mode
possible. Si tu l'avais dans ta config, ça ne change rien pour toi.



Oui ben, normal que tu ne comprennes pas, vu comment je me suis
expliqué ;)
En fait, je voulais un No-Nodaemon :D
En clair, je veux le lancer en daemon.

Donc tu confirmes que seul le mode NoDaemon existe maintenant ?
"&" est la seule solution ?
Baton .rouge
Le #25643122
On Thu, 5 Sep 2013 13:59:52 +0000 (UTC), Christophe PEREZ

Bonjour,




VLC fait aussi du stream :
http://doc.ubuntu-fr.org/vlc#streaming_webcam



--
Vous voulez un conseil ?
Ne faites jamais confiance à ceux qui vous donnent des conseils.
Christophe PEREZ
Le #25643192
Le Sat, 07 Sep 2013 20:44:01 +0200, Baton .rouge a écrit :

VLC fait aussi du stream : http://doc.ubuntu-fr.org/vlc#streaming_webcam



Oui, c'est gentil merci, mais je ne cherchais pas une solution de
streaming, mais plutot à faire fonctionner celle que j'avais déjà, à
nouveau, dans la mesure du possible.
Publicité
Poster une réponse
Anonyme