Poster une réponse à un sujet: VLC et la VOD --> commande en telnet : soucis caractères spéciaux
Attention, ce sujet est un sujet ancien (5350 jours sans réponse)
andewez
News :
Pour ceux que ça intéréssent :
1) j'ai créé un fichier vlm.conf dans le répertoire de VLC (..program files/videolan/vlc/vlm.conf)dans lequelle je mets mes commandes
(ex :
####start vlm.conf file
new videotest1 vod enabled
setup videotest1 input F:/test.avi
new videotest2 vod enabled
setup videotest2 input F:/vidéos/test.avi
####END
)
Pour lancer vlc en ligne de commande et qu'il tiennent compte de ce fichier :
"\VideoLAN\VLC\vlc" --ttl 2 -vvv --color -I telnet --telnet-password videolan --rtsp-host localhost:5554 --vlm-conf vlm.conf
L'interface telnet est toujours utilisable.
NB : par défaut le port de communication de telnet avec VLC est 4212 (modifiable dans les options)
Bon ça c'est pour ceux que ça intéressent. Malheureusement les chemins avec accents ne fonctionnent pas mieux comme cela.
Vu le temps qu'il me reste et au vu des trucs que j'ai encore à faire, je ne peux plus me permettre de le perdre du temps précieux là dessus.
Si quelqu'un trouve une solution elle est toujours la bienvenue.
Je tenterai ultérieurement d'y revenir car ce sujet m'intérésse mais là , à deux semaines de la fin de mon stage ça devient short short.
Je voudrais de nouveau vous remercier pour votre aide et vous dire que je mets mes codes sources etc à disposition si certains sont intéréssés par de la VOD (ou du streaming en général avec VLC et sa réception dans un site web)
Andy
Pour ceux que ça intéréssent :
1) j'ai créé un fichier vlm.conf dans le répertoire de VLC (..program files/videolan/vlc/vlm.conf)dans lequelle je mets mes commandes
(ex :
####start vlm.conf file
new videotest1 vod enabled
setup videotest1 input F:/test.avi
new videotest2 vod enabled
setup videotest2 input F:/vidéos/test.avi
####END
)
Pour lancer vlc en ligne de commande et qu'il tiennent compte de ce fichier :
"\VideoLAN\VLC\vlc" --ttl 2 -vvv --color -I telnet --telnet-password videolan --rtsp-host localhost:5554 --vlm-conf vlm.conf
L'interface telnet est toujours utilisable.
NB : par défaut le port de communication de telnet avec VLC est 4212 (modifiable dans les options)
Bon ça c'est pour ceux que ça intéressent. Malheureusement les chemins avec accents ne fonctionnent pas mieux comme cela.
Vu le temps qu'il me reste et au vu des trucs que j'ai encore à faire, je ne peux plus me permettre de le perdre du temps précieux là dessus.
Si quelqu'un trouve une solution elle est toujours la bienvenue.
Je tenterai ultérieurement d'y revenir car ce sujet m'intérésse mais là , à deux semaines de la fin de mon stage ça devient short short.
Je voudrais de nouveau vous remercier pour votre aide et vous dire que je mets mes codes sources etc à disposition si certains sont intéréssés par de la VOD (ou du streaming en général avec VLC et sa réception dans un site web)
Andy
andewez
j'apprécie vraiment le "should bidouille"
Je suis en train de regarder le telnet.c du source de VLC et je trouve:
Ca, c'est clairement écrit par un Français...
Par contre, sans y passer trop de temps, je ne vois pas trop ce que donne l'encodage dans le code de VLC. Je me demande si ça ne dépendrait pas des paramètres de compilation.
- /* and now we should bidouille the data we received / send */
- for(int i = 0 ; i < p_sys->i_clients ; i++ )
Ca, c'est clairement écrit par un Français...
Par contre, sans y passer trop de temps, je ne vois pas trop ce que donne l'encodage dans le code de VLC. Je me demande si ça ne dépendrait pas des paramètres de compilation.
andewez
@rfr : J'ai changé mon code pour envoyer directement la chaine de bytes comme tu me l'avais écrit et ce sous différents format d'encoding sans résultats.
@Olaf : Pour VLC, j'ai beau chercher, je ne trouve pas les format d'encodage supportés.
J'ai l'impression que je m'enfonce dans cette solution, et mon temps est compté malheureusement. Mais je n'ai pas dis mon dernier mot. J'ai vu qu'il était possible de faire cette manoeuvre différent. Cad : écrire un fichier VLM.conf et lui dire en telnet de lire cette commande.
Etant donné que j'arrive à communiquer en telnet tant qu'il n'y a pas de caractères spéciaux, je placerai ce fichier, si c'est possible, à la racine de mon disque évitant donc des accents et autres caractères spéciaux.
Je vous tiens au courant, ça pourrait servir à d'autres...
Au risque de me répéter, merci de votre aide.
Andy
@Olaf : Pour VLC, j'ai beau chercher, je ne trouve pas les format d'encodage supportés.
J'ai l'impression que je m'enfonce dans cette solution, et mon temps est compté malheureusement. Mais je n'ai pas dis mon dernier mot. J'ai vu qu'il était possible de faire cette manoeuvre différent. Cad : écrire un fichier VLM.conf et lui dire en telnet de lire cette commande.
Etant donné que j'arrive à communiquer en telnet tant qu'il n'y a pas de caractères spéciaux, je placerai ce fichier, si c'est possible, à la racine de mon disque évitant donc des accents et autres caractères spéciaux.
Je vous tiens au courant, ça pourrait servir à d'autres...
Au risque de me répéter, merci de votre aide.
Andy
Olaf
Mais le serveur telnet intégré à VLC, il supporte quoi, lui, comme encodage? Tu as essayé un simple client telnet configuré en utf8/ASCII/iso-8859-1(5)? (Je pense que putty supporte tout ça, mais je peux me tromper)
Ensuite, si tu veux voir ce que crache ton soft java, tu peux créér facilement un serveur telnet avec netcat (en une ligne de commande )
Ensuite, si tu veux voir ce que crache ton soft java, tu peux créér facilement un serveur telnet avec netcat (en une ligne de commande )
rfr
Oué mais ton code ... il convertit un String en array de bytes pour le reconvertir tout de go avec le decoder par défaut dans un string et à l'envoi il sera de nouveau encodé avec l'encodeur par défaut. En gros, c'est pire qu'avant ...
Ce qu'il faut faire c'est changer le outT.println par un ouT.writeXXX(byte[])
Ce qu'il faut faire c'est changer le outT.println par un ouT.writeXXX(byte[])
andewez
Merci Merlin de ta réponse. Je vais zieuter à ça.
Le problème supplémentaire est qu'en dehors des accents, il faudrait que je trouve un encoding qui supporte des caractères chinois, russes, arabes...
Enfin étapes par étapes...
Le problème supplémentaire est qu'en dehors des accents, il faudrait que je trouve un encoding qui supporte des caractères chinois, russes, arabes...
Enfin étapes par étapes...
Voici quand même mon code :
C'est quand même simple... je vois pas où je pourrais me tromper.
- nvchaine = new String(value.getBytes(),"ISO-8859-1");
- ...
- outT.println(nvchaine);
C'est quand même simple... je vois pas où je pourrais me tromper.
Par exemple en spécifiant le charset dans getBytes():
- nvchaine = new String(value.getBytes("ISO-8859-1"),"ISO-8859-1");
Sinon getBytes() prend l'encodage par défaut et il y a des chances que ce soit de l'UTF8. Ton accent sera donc codé sur 2 bytes. Ensuite quand tu fais ton new String, tu forces ces deux bytes comme étant 2 caractères latin1 différents. => merdouille.
Ceci dit, inutile de repasser par une nouvelle String, tu peux directement faire:
- outT.println(value.getBytes("ISO-8859-1"));
avec le try/catch UnsupportedEncodingException.
Tu peux vouloir essayer aussi le ISO-8859-15 qui inclut le symbole € et son équivalen cp??? de Windows.
andewez
Pour faire le trace, j'envois une commande show à VLC.
Il me renvoit ceci :
>show video181
show
video181
type : vod
enabled : yes
mux :(null)
inputs
1 : F:/vidéos/test.avi
output :
options
instances
>
Il me renvoit ceci :
>show video181
show
video181
type : vod
enabled : yes
mux :(null)
inputs
1 : F:/vidéos/test.avi
output :
options
instances
>
rfr
faudrait un trace de ce que vlc essaie d'ouvrir ...
SysInternals avait un outil qui permettait de monitorer les accès fichiers. C'est microsoft qui a repris maintenant mais je ne me souviens plus du nom de l'outil.
SysInternals avait un outil qui permettait de monitorer les accès fichiers. C'est microsoft qui a repris maintenant mais je ne me souviens plus du nom de l'outil.