Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 >

mercredi 21 mars 2007

Serveur de streaming vidéo (MPEG4IP): récupérer le flux de la télévision de la Freebox V4, réceptionné sur un ordinateur par une carte Pinnacle PCTV USB2 50e (V4L2/em28xx)

est un projet qui couplé avec Darwin Server de chez ces pédés de Mac OS X permet d'obtenir un serveur de streaming vidéo. Mon but ici est de récupérer le flux de la télévision de ma Freebox V4 sur un ordinateur à l'aide de ma carte PCTV USB 50e. Il existe bien le projet avec VLC/Multiposte de chez Free pour avoir certaines chaines mais pas tous - par exemple TF1 qui n'est plus disponilble -.Je ferais de cet ordinateur un serveur de streaming vidéo de manière à pouvoir ensuite regarder la télé sur mon portable en WIFI grâce à VLC.

En gros voici ce que je souhaite mettre en place,


Principe du streaming pour le flux de la télévision de ma Freebox V4.
La carte Pinnacle PCTV USB2 50e là voici

Carte Pinnacle PCTV USB2 50e

MATERIEL ET BRANCHEMENTS

Je résume rapidement ici ce qu'il faut! On peut trouver tout le schéma complet et détaillé à http://www.eleves.ens.fr/home/meles/informatique/guides/tv/que j'ai adapté à mon matos ici


Le commutateur. Il faut veiller à être sur la postion OUT surtout.
Au niveau des câbles, il nous faut

Câble composite pour la vidéo.

Câble composite pour l'audio.
Au niveau des branchements, il suffira de faire

Connexion pour la freebox et la carte TV.
La carte est ensuite connectée à l'ordi par le port USB. L'entrée audio-composite se branche soit sur le microphone ou le line-in. Passons maintenant à la

RECONNAISSANCE/INSTALLATION DE LA CARTE

J'ai ici pris une version de la Dapper qui n'a pas été mise à jour depuis longtemps! Un petit uname -r me renvoit

root@jenna:~# uname -r
2.6.15-23-386

Hic! Celà ne sera pas suffisant pour reconnaitre ma carte PCTV USB2 automatiquement. Mais que celà ne tienne!

Voici comment faire ! A un moment où j'ai voulu suivre les indications de http://www.marcushellberg.com/pages/projects/digital-tv-in-linux.php mais celà me donnait des numéros de cartes non conformes à la mienne et apparement ce mercurial a récemment été mis à jour . Or sur une de mes bécanes, j'avais encore mon ancien répertoire v4l-dvb qui m'avait permis de l'installer pour ma carte. Donc du coup, pour tout retester, je l'ai mis sur mon site en libre téléchargement à l'adresse http://www.davidgis.fr/download/v4l-dvb-pctvusb250e-20070322.tar.gz

modprobe -r em28xx
apt-get install linux-headers-$(uname -r) mercurial gcc build-essential
cd /usr/src
wget http://www.davidgis.fr/download/v4l-dvb-pctvusb250e-20070322.tar.gz
tar xvzf 4l-dvb-pctvusb250e-20070322.tar.gz
cd v4l-dvb/
make
make install

Si on fait

modprobe em28xx

pour charger notre carte celle-ci ne sera pas encore prise en considération immédiatemment. En effet:

rdavid@jenna:~$ dmesg |grep -i Pinnacle
[4294688.006000] em28xx #0:     card=3 -> Pinnacle PCTV USB 2
[4294688.006000] em28xx #0:     card=9 -> Pinnacle Dazzle DVC 90
[4294688.006000] em28xx #0:     card=18 -> Pinnacle PCTV DVB-T
[4294688.006000] em28xx #0:     card=21 -> Pinnacle Hybrid Pro

Il nous faut ajouter la ligne suivante à notre fichier /etc/modprobe.d/options

echo options em28xx card=3 >> /etc/modprobe.d/options

Et on redémarre la machine!

REGARDER LA TELEVISION

Personnellement, j'ai essayé avec VLC mais je n'ai rien obtenu ! Mais j'ai réussi avec TVTIME et GMPLAYER . Je détaille dans la suite comment procéder.

TVTIME

Avec tvtime, c'est de loin le plus intéressant

sudo apt-get install tvtime
Il faut ensuite configurer tvtime. La suite va dépendre de l'entrée vidéo: S-Vidéo ou Composite. Pour info, l'entrée Composite est celle qui est la plus proche de la diode bleu ;) Ensuite, on lance tvtime depuis un terminal
tvtime
Si l'image est brouillée au début celà n'est pas bien grave. Il faut faire un clic-droit! Dans le menu qui apparaît, il faut choisir "Input Configuration"
Dans le nouveau menu, choisis "Change video source" entre S-Video ou Composite 1
Pour avoir le tuner en PAL, SECAM, il suffit de choisir l'option Television Standard et de redémarrer tvtime comme proposé!
GMPLAYER

Il suffira de taper depuis un terminal

gmplayer tv:// -tv driver=v4l2:device=/dev/video0:outfmt=i420:width=640:height=480:adevice=/dev/dsp1:norm=pal:input=1

Dans le terminal actif , on notera surtout les informations suivantes

Playing tv://.
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski 
 comment: first try, more to come ;-)
Selected device: Pinnacle PCTV USB 2
 Tuner cap:
 Tuner rxs:
 Capabilites:  video capture  tuner  audio  read/write  streaming
 supported norms: 0 = PAL; 1 = PAL-DK; 2 = PAL-I; 3 = NTSC; 4 = SECAM; 5 = PAL-M;
 inputs: 0 = Television; 1 = Composite1; 2 = S-Video;
 Current input: 1
 Current format: YUYV
v4l2: current audio mode is : MONO
v4l2: ioctl query control failed: Argument invalide
==========================================================================
Opening video decoder: [raw] RAW Uncompressed Video
VDec: vo config request - 640 x 480 (preferred colorspace: Packed YUY2)
VDec: using Packed YUY2 as output csp (no 0)
Movie-Aspect is undefined - no prescaling applied.
VO: [xv] 640x480 => 640x480 Packed YUY2
Selected video codec: [rawyuy2] vfm: raw (RAW YUY2)
==========================================================================
Audio: no sound
Starting playback...
v4l2: 1384 frames successfully processed, 9 frames dropped.

MPEG4IP

On va commencer par quelques paquets.

apt-get install libtool libsdl1.2-dev

On téléchargera la version 1.5.0.1 de mpeg4ip directement sur le site http://mpeg4ip.sourceforge.net.

 tar xvzf mpeg4ip-1.5.0.1.tar.gz
cd mpeg4ip-1.5.0.1
./bootstrap

Si on a l'erreur

Error - we have detected a version of faac that has libmp4v2 support
and no copy of mpeg4ip-config.  This means faac was built with
faad2 and the libraries will be incompatible.
Please reinstall faac without mp4v2 support

Pas de panique!

apt-get source libfaac-dev
cd ..
cd faac-1.24clean/
apt-get install automake autoconf
./boostrap
./configure

qui a un moment nous renverra surtout cette ligne

checking for MP4MetadataDelete in -lmp4v2... no

Ok! On continue

make
make install
ldconfig
maintenant on revient à mpeg4ip
cd ../mpeg4ip-1.5.0.1

On va ajouter quelques paquets supplémentaires. Celà je le fais en fonction de ce qui est demandé sur http://mpeg4ip.sourceforge.net/documentation/index.php#pre

apt-get update
apt-get install liblivemedia-dev liblame-dev libxvidcore4-dev liba52-0.7.4-dev libid3-3.8.3-dev libid3tag0-dev  libmpeg2-4-dev libx264-dev

Pour installer MPEG4IP, il suffira de faire

./bootstrap
make
make install
ldconfig

Darwin Server

Pour avoir le rtsp, il nous faut un serveur pour celà: Darwin Server de chez ces grosses tapettes de Mac OS X. Pour l'obtenir, il suffit de s'inscrire sur le site d'Apple à http://myinfo.apple.com/. On le télécharge ensuite à http://www.opensource.apple.com/projects/streaming/release/DarwinStreamingSrvr5.5.4-Linux.tar.gz. Son installation est des plus rudimentaires

tar xvfz DarwinStreamingSrvr5.5.4-Linux.tar.gz
cd DarwinStreamingSrvr5.5.4-Linux
chmod 777 -R .
./Install

Lors de l'installation, on demandera de fournir un nom d'administrateur et un mot de passe. Faudra pas les perdre! L'installation terminée, on ouvre un navigateur comme FireFox, on se rend à l'adress http://127.0.0.1:1220/. Quelques petites configuration de base seront demandées que je ne détaille pas ici.

N.B: Pour une utilisation ultérieure de Darwin Server, pour redémarrer le service , il suffira de saisir dans un terminal streamingadminserver.pl. Il faut veiller à ce qu'il n'y est pas déjà un serveur apache qui tourne sur le port 80.

TESTS

mp4live + Darwin Server - côté serveur

On s'assure que le serveur de Darwin est bien lancé. On lance maintenant mp4live...Celà aura pour effet de créer les fichiers et répertoires suivants:

root@jenna:~# find .mp4live_*
.mp4live_d
.mp4live_d/Video
.mp4live_d/Video/default
.mp4live_d/Audio
.mp4live_d/Audio/default
.mp4live_d/Text
.mp4live_d/Text/default
.mp4live_d/Streams
.mp4live_d/Streams/default
.mp4live_rc

Dans l'interface de configuration de mp4live, sur la figure suivante, j'ai mis ce qui est important de changer:

  • le répertoire pour le fichier .sdp est /usr/local/movies/. C'est bien sûr le répertoire par défaut de Darwin Server où l'on dépose les fichiers que l'on souhaite streamer;
  • les paramètres Composite1 pour la vidéo et pour le son sont accessibles et adaptable en accédant au menu déroulant "Change Source".
N.B: Pour de plus amples renseignements, on peut se référer à http://mpeg4ip.sourceforge.net/documentation/index.php#dss

Modificiations nécessaires à apporter à mp4live pour le coupler à Darwin Server.
VLC pour regarder la télé - côté client

Pour regarder la télé depuis VLC selon le protocole RTSP, il me suffira de saisir:

vlc rtsp://192.168.0.5/default.sdp

patch pour MPEG4IP 1.5.0.1 pour un image en 560x448 avec une carte Pinnacle PCTV USB2

J'ai beau m'être tapé toute la doc de mpeg4ip pour l'encoder mp4live, je ne suis pas parvenu à paramétrer selon les paramètres de configuration proposés les dimensions de mon image pour le Streaming. En effet par défaut 320x240 c'est pour du 4:3 (4x3) mais ma carte a en rapport 720x576. Le mieux après quelque tests, c'est de descendre à 560x488 pour ne pas mobiliser tout ma machine! Car le 720x576 plante ma machine! Eh oui ma petite jenna n'est pas si jeune que ça!


Dimension de la vidéo et aussi pour le streaming après application du patch.

J'ai donc modidfié directement le source pour pouvoir le faire! Pour celà, je propose donc le patch obtenur en faisant

diff -c -r  mpeg4ip-1.5.0.1/server/mp4live mpeg4ip-1.5.0.1-good/server/mp4live > mpeg4ip-1.5.0.1-20070321patch

dont le contenu sera

Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live: .deps
Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live/gui: .deps
Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live/gui: Makefile
Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live/h261: .deps
Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live/h261: Makefile
Seulement dans mpeg4ip-1.5.0.1-good/server/mp4live: Makefile
diff -c -r mpeg4ip-1.5.0.1/server/mp4live/mp4live_config.h mpeg4ip-1.5.0.1-good/server/mp4live/mp4live_config.h
*** mpeg4ip-1.5.0.1/server/mp4live/mp4live_config.h	2005-12-19 18:47:26.000000000 +0100
--- mpeg4ip-1.5.0.1-good/server/mp4live/mp4live_config.h	2007-03-21 06:45:03.000000000 +0100
***************
*** 251,258 ****
    CONFIG_BOOL(CONFIG_VIDEO_PREVIEW, "videoPreview", false),
  
    CONFIG_STRING(CONFIG_VIDEO_PREVIEW_STREAM, "videoPreviewStream", NULL),
!   CONFIG_INT(CONFIG_VIDEO_RAW_WIDTH, "videoRawWidth", 320),
!   CONFIG_INT(CONFIG_VIDEO_RAW_HEIGHT, "videoRawHeight", 240),
  
    CONFIG_INT(CONFIG_VIDEO_BRIGHTNESS, "videoBrightness", 50),
    CONFIG_INT(CONFIG_VIDEO_HUE, "videoHue", 50),
--- 251,258 ----
    CONFIG_BOOL(CONFIG_VIDEO_PREVIEW, "videoPreview", false),
  
    CONFIG_STRING(CONFIG_VIDEO_PREVIEW_STREAM, "videoPreviewStream", NULL),
!   CONFIG_INT(CONFIG_VIDEO_RAW_WIDTH, "videoRawWidth", 560),
!   CONFIG_INT(CONFIG_VIDEO_RAW_HEIGHT, "videoRawHeight", 448),
  
    CONFIG_INT(CONFIG_VIDEO_BRIGHTNESS, "videoBrightness", 50),
    CONFIG_INT(CONFIG_VIDEO_HUE, "videoHue", 50),
diff -c -r mpeg4ip-1.5.0.1/server/mp4live/profile_video.h mpeg4ip-1.5.0.1-good/server/mp4live/profile_video.h
*** mpeg4ip-1.5.0.1/server/mp4live/profile_video.h	2005-09-08 00:23:28.000000000 +0200
--- mpeg4ip-1.5.0.1-good/server/mp4live/profile_video.h	2007-03-21 06:45:38.000000000 +0100
***************
*** 59,66 ****
    CONFIG_STRING(CFG_VIDEO_ENCODER, "videoEncoder", VIDEO_ENCODER_XVID),
    CONFIG_STRING(CFG_VIDEO_ENCODING, "videoEncoding", VIDEO_ENCODING_MPEG4),
  
!   CONFIG_INT(CFG_VIDEO_WIDTH, "videoWidth", 320),
!   CONFIG_INT(CFG_VIDEO_HEIGHT, "videoHeight", 240),
    CONFIG_FLOAT(CFG_VIDEO_FRAME_RATE, "videoFrameRate", 
  	       VIDEO_NTSC_FRAME_RATE),
    CONFIG_FLOAT(CFG_VIDEO_KEY_FRAME_INTERVAL, "videoKeyFrameInterval", 
--- 59,66 ----
    CONFIG_STRING(CFG_VIDEO_ENCODER, "videoEncoder", VIDEO_ENCODER_XVID),
    CONFIG_STRING(CFG_VIDEO_ENCODING, "videoEncoding", VIDEO_ENCODING_MPEG4),
  
!   CONFIG_INT(CFG_VIDEO_WIDTH, "videoWidth", 560),
!   CONFIG_INT(CFG_VIDEO_HEIGHT, "videoHeight", 448),
    CONFIG_FLOAT(CFG_VIDEO_FRAME_RATE, "videoFrameRate", 
  	       VIDEO_NTSC_FRAME_RATE),
    CONFIG_FLOAT(CFG_VIDEO_KEY_FRAME_INTERVAL, "videoKeyFrameInterval", 

pour appliquer le patch, il suffira de faire

oot@jenna:/mnt/src#tar xzf mpeg4ip-1.5.0.1.tar.gz
root@jenna:/mnt/src# patch -p0 < mpeg4ip-1.5.0.1-20070321patch
patching file mpeg4ip-1.5.0.1/server/mp4live/mp4live_config.h
patching file mpeg4ip-1.5.0.1/server/mp4live/profile_video.h

mardi 20 mars 2007

Deux options à noter pour la commande find

Je faisais un petit man find quand je suis tombé sur les options -path et -type très intéressante. Par exemple pour -path, pour recherche de tout ce qui se termine par "postgis.sql"

olivia~#cd /usr/local/pgsql
olivia:/usr/local/pgsql# find . -path '*postgis.sql' 
./share/lwpostgis.sql
et pour -type, man find me donne
      -type c
              Fichier du type c :

              b      fichier spécial en mode bloc (avec tampon)

              c      fichier spécial en mode caractère (sans tampon)

              d      répertoire

              p      tube nommé (FIFO)

              f      fichier régulier

              l      liens symbolique

              s      socket

              D      door (Solaris)

Par exemple, uniquement que les répertoires

olivia:/usr/local/pgsql# find $PWD -type d|grep contrib
/usr/local/pgsql/doc/contrib
/usr/local/pgsql/share/contrib

Bon il y en a d'autres mais ces deux options risquent d'être celles que j'utiliserais le plus dorénavant. Ces commandes risquent de me rendre bien des servcies notamment pour retrouver le fichier lwpostgis.sql de PostGIS:

find $(pg_config --sharedir) -path '*lwpostgis.sql'

lundi 19 mars 2007

Ce week-end: Oggy ,mpeg4ip et darwin server samedi soir et barbecue dimanche...et...beaucoup dormi.

«Quel week-end atypique et bien rempli!» je me dis ce lundi matin en écrivant ce billet!...Tout en commencé déjà samedi matin

Samedi

Ayant passé tout le soirée de vendredi à essayer d'installer un serveur de streaming vidéo, j'étais crevé déjà samedi matin ... Je me suis couché finalement que vers 9h00 du matin! «Je serais debout vers 15h00» me suis-je dis avant de me coucher! Finalement je me suis réveillé vers 18h00 - j'aurais donc passé tout la journée à dormir

Et comme chaque samedi soir, je me suis donc mis en position pour regarder «Oggy et les cafards» ......Houlala houlala, c'était de nouveaux épisodes que je n'avais pas encore vu! Que du bonheur! Je me suis tellement marré que je pense que j'ai du réveillé les voisins du dessus ! C'était vraiment trop génial! J'aurais du les enregistrer.

Dans la nuit de samedi à dimanche: serveur de streaming vidéo avec mp4live et Darwin Server pour récupérer le flux de la télévision de la Freebox depuis une carte PCTV USB2 Pinnacle

Ensuite zou! Installé sur bremko - mon VAIO -, j'avais décidé ce soir de réussir à installer au moins une des diverses solutions software proposées pour installer un serveur de streaming vidéo pour tout ce qui attrait à V4L2! J'ai la prise péritel de ma Freeox V4 reliée à un de mes ordis par le biais de ma carte pctv usb2 50e de chez pinnacle - ce qui me permet de regarder la télé sur l'ordi grâce à TVTIME. Et comme j'ai mon portable en wifi, j'aurais voulu au moins pouvoir trimballer avec moi mon protable dans le salon de manière à pouvoir regarder la télé au moyen par exemple de VLC en tant que client. Celà me permettrait aussi de passer l'ordi à a chérie lors de ses soirées de foot. J'ai donc tout essayé cette semaine:

  • VLC mais apparement un souci pour le chroma YUYV et les autres pour ma carte PCTV USB2. J'ai même essayé les diverses solutions de sortie vidéo possibles mais rien à faire;
  • flumotion que j'avais en paquet .deb pour ma Dapper mais j'ai eu l'erreur «gstreamer could not read from resource»;
  • spook: l'image passait mais elle était en vert, rose! Et dans le fichier de configuration pas moyen d'aller plus loin notamment pour essayer d'avoir une meilleur image;
  • ffmpeg/ffserver aussi n'a pas marché...

......Mais je n'ai pas baissé les bras pour autant. Je suis aussi revenu à une des solutions proposées à savoir mpeg4ip...J'ai eu une petite erreur de faac comme quo, il était mal compilé chez moi. Que celà ne tienne. J'ai quand même réussi à l'installer et aussi Darwin Server de chez Mac de mes couilles


mp4live de MPG4IP et Interface de gestion de Darwin Server.

Note pour plus tard: penser à faire un billet sur ces installations !

Dimanche

Dimanche, nous avons été invité à participer à un barbecue chez nos amis Dalox et sa chérie! On s'est fait un petit apéro à 13h00 et on est passé à table à 14h00~14h30. Mama, après le repas je me suis affalé dans son canapé pour digérer. Au retour, je suis allé me poser dans le clic-clac histoire de regarder un peu la téloche! Ben celà n'a pas raté: je me suis endormi! Cathy m'a réveillé, il était déjà 20h00......Faut dire aussi que j'étais bien crevé! Finalement j'ai passé la soirée à regarde la télé sur RTL9 - une des chaines préférées de comme mon vieux -. Y'avait pas vraiment de grand film. Au menu de la soirée deux films! Le premier c'était «Strip-tease» avec Demi Moore et le second un film d'horreur tout pourri «L'étoile du mal» ...Je voulais juste quelque chose à regarder juste pour passer le temps, sans rien de plus mais je ne regrette pas ma petite soirée

Quel week-end !

P.S: C'est vrai que ces temps-ci, en dehors de ma vie professionnelle - comme j'ai beaucoup de temps libre en ce mois de mars 2007 - je m'adonne beaucoup à tout ce qui touche à la geekattitude et au multimédia sous GNU/Linux.

  • projet lirc avec les télécommandes ATI Remote Wonder I et II;
  • projet aircrack-ng pour briser une clé wep;
  • projet de serveur de streaming vidéo personnel;
  • faire des petits films en flash avec Ming/PHP

Que de choses faites en moins de 3 semaines ...Je ne maîtrise pas tout ce que j'ai fait mais j'apprends énormément de choses et c'est ça qui me fait vachement plaisir ! Avoir souvent entendu parler de tout ces projets sans jamais trouver le temps nécessaire pour s'y intéresser - comme maintenant j'ai le temps qu'il faut -, celà aussi me plait ces temps-ci.

Je me suis découvert un second sujet d'intéressement en informatique - après PostGIS bien sûr - que je ne soupçonnais pas chez moi! En tout cas, je ne regrette pas de mettre l'énergie nécessaire de mon temps-libre dans ce genre de sujet puisque v'est vraiment intéressant même si je suis un gros newbie en tout ! C'est décidé cette semaine je vais m'attaquer à Elisa, Freevo,et à lire la doc sur mplayer/mencoder, transcode etc...! Il est temps de mettre à profit le temps que j'ai attendu pour pouvoir tester des trucs!