redirection d'entrées

redirection d'entrées - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 22-11-2010 à 09:13:33    

Bonjour,
 
Je suis en train de tester les redirections d'entrée et j'ai quelques interrogations.
 
Pour lire un fichier vidéo avec vlc, rien de plus simple :
 

Code :
  1. ./vlc fichier.mpg


 
Avec une redirection, je peux également procéder ainsi  :
 

Code :
  1. ./vlc /dev/stdin < fichier.mpg


 
Par contre, ça, ça ne fonctionne pas :
 

Code :
  1. ./vlc /dev/stdin  | cat fichier.mpg


 
Est ce que cela vient du fait que la commande cat ne peut pas fonctionner ainsi car fichier.mpg est un binaire ? ( cela m'étonne car je me sers de cat pour concaténer 2 fichiers sans problème ).
 
Ou alors tout simplement, ma syntaxe est fausse, auquel cas, quelqu'un pourrait-il m'indiquer la bonne syntaxe ?
 
Merci bien  :jap:  
 
 
 
 
 
 

Reply

Marsh Posté le 22-11-2010 à 09:13:33   

Reply

Marsh Posté le 22-11-2010 à 09:16:17    

xilebo a écrit :


Par contre, ça, ça ne fonctionne pas :

 
Code :
  1. ./vlc /dev/stdin  | cat fichier.mpg




et ça

cat fichier.mpg |./vlc /dev/stdin  


revoit la notion du pipe : il prend la sortie du premier pour l'injecter dans l'entrée du second.
Dans ton exemple, tu souhaite que vlc prenne l'entrée standard pour y lire son film. Donc tu fournis via cat cette entrée standard. Donc tu prends la sortie de cat, d'où le pipe.

 

Par contre je ne sais pas si ça fonctionnera, mais la logique est celle là.


Message édité par o'gure le 22-11-2010 à 09:18:07

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 22-11-2010 à 09:40:13    

J'inverse toujours les 2  :o
 
Merci :jap:
 
Edit : ca fonctionne , bien entendu :)


Message édité par xilebo le 22-11-2010 à 09:40:24
Reply

Marsh Posté le 22-11-2010 à 09:56:12    

Hum j'ai répondu trop vite :(
 
ceci fonctionne et est équivalent  
 

Code :
  1. ./vlc /dev/stdin < fichier.wav
  2. cat fichier.wav | ./vlc /dev/stdin


 
par contre ceci ne fonctionne pas ( seule la première ligne fonctionne ) :
 

Code :
  1. ./vlc /dev/stdin < image.iso
  2. cat image.iso  | ./vlc /dev/stdin


 
 
 
Il y a une subtilité que je n'ai pas vue entre ligne 1 et ligne 2 ?  

Reply

Marsh Posté le 22-11-2010 à 10:42:22    

Je pense savoir d'où ca vient.
 
Dans le premier cas, le fichier existe déjà, et c'est un simple changement de descripteur de fichier ( dup) qui est effectué, ainsi vlc a tout le contrôle sur le fichier comme si il avait été passé en paramètre.
 
Dans le 2ème cas, le fichier est régénéré sur la sortie standard par la commande cat , ce n'est donc plus le fichier mais un flux généré par cat qui n'est pas contrôlable ( genre retourner en arrière etc ...)
 
 
Or, pour l'exemple audio, ce n'est pas gênant car le wav est un flux, je peux juste faire avance rapide dans le premier cas et pas dans le second.
 
Par contre, pour l'exemple iso (image iso de dvd, contenant donc un fs ) , le plugin d'accès DVD a besoin d'un accès aléatoire et non séquentiel pour reconstituer les menus, c'est pourquoi cela marche dans le premier cas (puisqu'on travaille directement sur le fichier ) , et pas dans le second.
 
Mon raisonnement est-il bon ?

Reply

Marsh Posté le 22-11-2010 à 10:48:25    

Ton sujet dans la cat' Windows aborde un sujet similaire...
Quelle est ta VRAIE question ?

Message cité 1 fois
Message édité par Fork Bomb le 22-11-2010 à 10:48:34

---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 22-11-2010 à 10:57:25    

Fork Bomb a écrit :

Ton sujet dans la cat' Windows aborde un sujet similaire...
Quelle est ta VRAIE question ?


 
 
ma vraie question est simple, mais je n'avais pas forcément envie de l'aborder concrétement car généralement, quand je décris un process, personne ne le lit car le message est trop long.
 
 
J'ai besoin de lire un flux video avec VLC. Malheureusement, les médias que l'on va acheter auprès de la société de production vont être crypté.
 
Double malheureusement, le cryptage utilisé n'est pas du tout adapté à l'audio/vidéo, si bien que l'API ne propose même pas de décryptage par paquets. On a à notre disposition juste un binaire ( l'API faisant exactement la même chose ) prenant en entrée un fichier, et en sortie le fichier décrypté. Ce binaire propose une option supplémentaire, de générer sur la sortie standard plutôt que dans un fichier le contenu décrypté.
 
Or, d'après mes premiers tests, rediriger ce flux vers vlc n'est pas si simple , et montre bien les limites. D'ailleurs, si les médias fournis sont des images isos de DVDs, cela ne fonctionnera même pas du tout ( vu le résultat de mes tests).
 
Sachant que j'ai des doutes sur mon raisonnement, je viens juste demander confirmation, je pensais pourtant mon message précédent plutôt clair.
 
Quant à ma question dans la Cat Windows, je ne l'ai pas posé ici pour ne pas me faire jeter. Effectivement, mon projet étant multiplateforme, il doit tourner sous linux et windows, et je ne sais pas comment effectuer mes tests sous windows.
 
Voila.


Message édité par xilebo le 22-11-2010 à 10:58:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed