[stream] streamer un fichier video en gardant le controle play/pause/retour ...

Applications multimedia / jeux
Musky
Daikyu
Messages : 96
Inscription : mer. 26 août 2009, 01:32
Localisation : Bourges

[stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par Musky »

Bonjour à tous.

J'ai besoin de pouvoir streamer des fichiers multimedias (vidéos diverses) depuis un ordinateur maitre (bi-xeon, 12G RAM) vers les ordinateurs du réseau local, mais je dois pouvoir garder le contrôle de la lecture (play / pause / retour ...)

Pour avoir une idée du contexte, il s'agit de diffuser des vidéos dans la salle informatique d'une école, en groupe classe (donc pas indépendamment sur chaque poste, ce qui exclut de fait toute solution de type VOD, rtsp ...) Un seul PC a une sortie audio reliée à un ampli, donc les images doivent être synchronisées.

J'utilise depuis déjà un certain temps VLC avec une ligne de commande du type :

Code : Tout sélectionner

vlc --sout "#transcode{vcodec=mp4v,vb=2000,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{dst=224.0.0.1,port=5004,mux=ts}" --sout-keep MONFICHIERVIDEO.XYZ
Ça fonctionne pas trop mal, mais j'ai souvent des plantages de la part de VLC, particulièrement lors des retours en arrière (qui sur mon PC maitre font planter VLC sans avoir grand chose pour m'aider: segmentation fault....). De plus, j'ai de nombreuses erreurs relatives à l'encodage (différentes selon l'utilisation de mp4v ou h264, mais toujours des erreurs), des freezes lors de la reprise de la lecture ....

J'ai testé tout ce que j'ai pu penser d'autre, mais rien de bien concluant:

--> l'utilisation de http au lieu de rtp dans vlc pose un problème majeur, l'image disparaît des clients après quelques secondes en cas de pause de la source

--> je n'arrive pas à utiliser udp en multicast avec vlc

--> ffmpeg fonctionne très bien, mais je n'ai plus de contrôle sur la diffusion de la source (et pour info, je n'ai pas réussi à le faire fonctionner en rtp, et de mémoire en mpeg4 non plus)

Code : Tout sélectionner

ffmpeg -vcodec libx264 -tune zerolatency -b:v 900k -acodec aac -strict -2 -f mpegts "udp://224.0.0.1:5004" -re -i MONFICHIERVIDEO.XYZ
--> des pipes en tout genres, qui marchent mais ne sont pas concluant. En général ffmpeg n'aime pas trop quand je fais des déplacement dans la source

Code : Tout sélectionner

vlc MONFICHIERVIDEO.XYZ –sout "#std{access=file,mux=ts,dst=-}" | ffmpeg -v verbose -vcodec libx264 -b
:v 900k -acodec aac -strict -2 -f mpegts "udp://224.0.0.1:5004″ -re -i pipe:-
--> j'ai joué un peu avec ffserver mais sans obtenir les résultats escomptés (en particulier, mettre la source en pause n'interrompt pas la lecture des clients

--> j'ai encore rien compris à VLM....

Bref, je ne suis pas de mauvaise volonté, mais je me fatigue à tester plusieurs options différentes sans vraiment savoir quel serait l'outil le mieux adapté. Selon vous, quel serait la piste la plus susceptible de fonctionner de façon fiable (et, in fine, simple pour tous les instits non informaticiens de l'école). Connaissez-vous un logiciel qui puisse faire ce que je souhaite ? Des options de configuration / encodage plus adaptées ? un protocole réseau auquel je n'aurais pas pensé ? un endroit pour poser mes questions ?

Bref, merci à tous pour votre aide
Musky
Daikyu
Messages : 96
Inscription : mer. 26 août 2009, 01:32
Localisation : Bourges

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par Musky »

Quand j'ai lu ta réponse, je me suis dit : c'est pas vrai d'avoir été aussi c** pendant tant de temps à t'acharner comme ça....

Heureusement, je me suis souvenu que jusqu'à maintenant, on avait d'antiques pentium avec 64Mo de RAM en tant que client, et que j'étais dans l'obligation de convertir avant de diffuser (autrement les postes étaient incapables de lire quoique ce soit)...

Maintenant on a des nouveaux PC tout neufs, alors ça devrait aller :D
Je teste demain et passe en résolu si ça va bien.

Merci beaucoup

----Edit------
beuhh... y'avait pas une réponse de benjarobin avant ?
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par waitnsea »

Bonjour,
Oui, il semble que tu aies eu une solution et qu'elle ait disparu...
Tu pourrais la remettre ?
Merci... :D
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par benjarobin »

J'ai laissé le message même pas 1 minute... C'était une bêtise ce que j'avais écrit, tout du moins je n'étais pas sur de moi, et après un test je ne suis pas arrivé à le faire fonctionner. Mais c'est possible que ce soit un bug de VLC.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Musky
Daikyu
Messages : 96
Inscription : mer. 26 août 2009, 01:32
Localisation : Bourges

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par Musky »

si si, en fait ça marche, mais j'imagine que certains fichiers ne doivent pas passer... (même si, pour l'instant, j'en ai pas encore eu, à part un mp4 fraichement encodé qui, bizarrement, passe très bien une fois transformé en mkv...)

Pour rappel, c'était tout simplement de ne pas utiliser de transcodage, soir une ligne du type:

Code : Tout sélectionner

vlc --sout "#rtp{dst=224.0.0.1,port=5004,mux=ts}" --sout-keep MONFICHIERVIDEO.XYZ
J'ai pas encore testé avec les 15 postes, mais ça marche avec deux
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par benjarobin »

Sauf que si je tente ceci, ce que j'avais en effet proposé initialement, il m'est impossible de regarder la sortie, vlc indiquant qu'il n'arrive pas à décoder le flux ts.
Par curiosité tu fais comment pour la réception (ligne de commande ou via UI) ?
De plus tu utilises quelle version de VLC ? Sous Linux ou sous Windows ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Musky
Daikyu
Messages : 96
Inscription : mer. 26 août 2009, 01:32
Localisation : Bourges

Re: [stream] streamer un fichier video en gardant le controle play/pause/retour ...

Message par Musky »

vlc 2.2.1-5 sur linux 3.18.2-2-ARCH x86_64

je lance le fichier à streamer avec la commande précédente. Bien évidemment il n'y a pas d'affichage du fichier (puisque pas de sortie standard donnée), et la réception se fait en lançant une autre instance de vlc (soit sur le même poste, soit sur un autre) avec un bête

Code : Tout sélectionner

vlc rtp://224.0.0.1:5004
Ça marche vie l'UI aussi, mais je crois que tout se joue au niveau du fichier source. Si je comprends bien ce tableau explicatif :https://www.videolan.org/streaming-features.html, j'en déduis que:
le conteneur .ts (mpegts) n'accepte pas theora, vorbis, speed, FLAC, PCM, et que la sortie rtp n'accepte pas MPEG1, DivX 1/2/3, ni d'ailleurs ogg/asf/mp4

Bref, c'est aussi un peu pour ça que j'avais besoin d'encoder à la volée: assurer une compatibilité maximale avec tous les fichiers sources

Effet de bord intéressant, lorsque j'essaye de streamer sans transcodage un fichier mp4 (que je venais d'encoder, ça le fait pas avec tous), mon taux d'occupation processeur grimpe à 40 % (sur i5), le trafic réseau explose et parvient même à planter ma livebox (avec reboot obligatoire... bon, c'est pas un monstre de stabilité, mais quand même, c'est curieux)
Répondre