Utiliser l'ActiveX de vlc en C# [Résolu]

cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 26 juin 2006 à 16:27 - Dernière réponse : survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention
- 18 févr. 2010 à 11:25
Bonjour,

je réalise une application de capture de flux vidéo.
Pour pouvoir enregistrer ce flux, j'ai eu l'idée d'utiliser VLC (sous son activex) pour réaliser la capture et l'enregistrement du flux.
La capture ce fait seule.
On installer VLC en cochant l'option d'installation de l'activeX.
On crée un projet.
On ajoute le composant "VideoLAN VLC ActiveX Plugin".
Et on ajoute la ligne de code apres l'InitializeComponent().

axVLCPlugin1.addTarget("http://root:mdp@192.168.200.232/axis-cgi/mjpg/video.cgi", null, AXVLC.VLCPlaylistMode.VLCPlayListReplaceAndGo, 0);

et on voit le flux apparaitre.

J'ai également trouvé toutes les OPTIONS de VLC à entrer à la place du null dans le addTarget de la forme:

public string[] Voption ={":file-caching=1000",
":sout-ts-pid-video=68",
":sout-ts-pid-audio=69",
":sout-ts-pid-spu=70",
":sout-ts-pcr=80",
":sout-transcode-maxwidth=720",
":sout-transcode-maxheight=576",
":sout-standard-url=212.27.38.253:1234",
":sout=#transcode{vcodec=mp2v,vb=2000,scale=1,acodec=mpga,ab=384,channels=2}:duplicate{dst=display,dst=std{access=udp,mux=ts,url=212.27.38.253:1234}}" };

Mais j'aimerai trouver un code C# sur l'utilisation de l'ActiveX de VLC mais je ne trouve rien sur le net.

Quelqu'un a deja utliser VLC pour captuer, diffuser et enregistrer un flux video?
Quelqu'un sait comment insérer du texte dans l'image du flux comme des sous titres mais inséré "à la main" sans passer par un fichier?

f.colo
           
Afficher la suite 

12 réponses

Répondre au sujet
cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 17 juil. 2006 à 15:29
+1
Utile
Oui, j'y suis arrivé et ca marche assez bien :).
Par contre, pour mon utilisation, je devais afficher plusieur caméra (axis) et lorsque je lançais environ 5 activeX VLC en meme temps, mon application planté, alors j'ai laissé tomber cette solution.

Pour enregistrer tout ce joue dans les options:
                // Les options sont de la forme:
                // - Sortie: sout=
                // - Compression à la volée: #transcode{vcodec="+CODEC+",vb=512}
                // - Copie du flux compressé :duplicate{
                // - Dans un fichier: dst=std{access=file,mux="+MULTIPLEXEUR+",url="+DESTINATION+"},
                // - Et sur l'écran: dst=display}

                String option = "sout=#transcode{vcodec=";
                switch(comboBox1.SelectedIndex)
                {
                    case 0: //AVI
                        option += "mp4v,vb=512}:duplicate{dst=std{access=file,mux=mp4";
                        break;
                    case 1: //MPEG
                        option += "mp4v,vb=512}:duplicate{dst=std{access=file,mux=ps";
                        break;
                    case 2: //ASF
                        option += "DIV3,vb=512}:duplicate{dst=std{access=file,mux=asf";
                        break;
                }
                option += ",url="+textBox1.Text+"},dst=display}";
                Voption = new String[] { option };

Ensuite tu configurer l'activeX normalement:
                axVLCPlugin1.addTarget(this.textBox2.Text, Voption, AXVLC.VLCPlaylistMode.VLCPlayListReplace,0);

et tu lance la reception/visualisation:
                axVLCPlugin1.play();

A cette page et des info sur celle là, tu as la liste des options que tu peux combiner.
Avec les codecs klitecodecpack, j'ai pus avoir uen compatibilité WindowsMediaPlayer, MediaPlayerClassic et VCL qu'avec les combinaisons:
mpv1/mpeg1
mpv1/mp4
mp4v/mpeg1
mp4v/ps
mp4v/mp4
WMV1/asf
WMV2/asf
DIV2/asf
DIV3/asf

Si tu veux je t'envois mon projet par mail, envois moi un mp avec ton mail pour que je te l'envois.

f.colo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_fcolo
cs_cboury 3 Messages postés dimanche 2 mai 2004Date d'inscription 1 juillet 2006 Dernière intervention - 1 juil. 2006 à 11:29
0
Utile
j'avais posté un exemple sur le forum officiel de VLC, rapidement et qui n'a aucun interet si ce n'est montrer comment utiliser l'activex.
J'espere que ca conviendra:

http://lopez.tuparles.free.fr/vlc/
Commenter la réponse de cs_cboury
cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 3 juil. 2006 à 09:28
0
Utile
J'avais déja vu ton programme mais il génère des erreurs à la compilation apres le passage en .NET2.
Ensuite, j'arrive deja à une utilisation basique de l'activeX mais j'aimerai trouver un truc plus poussé, du genre lire un flux video et l'enregistrer à la volée durant la lecture apres un clic sur un bouton, sans réouvrir un autre flux vidéo (car dans mon cas c'es la vidéo d'une caméra IP, ca prend trop de bande passante de réouvrir un flux).

Merci bien pour ta source.

f.colo
Commenter la réponse de cs_fcolo
s_diddle 1 Messages postés mardi 27 juin 2006Date d'inscription 17 juillet 2006 Dernière intervention - 17 juil. 2006 à 15:06
0
Utile
Salut,
Je me heurte au même pb que toi, je souhaiterai enregistrer un flux vidéo d'un caméra IP et je ne trouve pas comment faire .
As-tu résolu ton pb? Si oui peux-tu m'indiquer comment tu as fais?
Merci d'avance

Sandrine
Commenter la réponse de s_diddle
espadon2 71 Messages postés jeudi 19 juin 2003Date d'inscription 21 octobre 2008 Dernière intervention - 8 févr. 2007 à 10:47
0
Utile
Bonjour ,

je travail sur le meme genre de projet ... et j' arrive pas a enregistrer quoi que ce soit :(

Viualiser oui , mais enregistrer le flux dans un fichier  non... rien le fichier se crée même pas....
Donc es tu ok pour m' envoyer ta source s'il te plait ????

voila ce que j'ai pour l'instant (Enregsitrement  de la WEB TV Direct 8 ), c'est du vb6 , mais bon le principe doit etre le même, vi que c'est le meme activeX
-------------------------------------------------------------------------------------------
Dim Voptions() As Variant
 Voptions() = Array(":sout=#transcode{vcodec=mp4v,vb=512}:duplicate{dst=std{access=file,mux=mp4 ,url=c:\toto.avi},dst=display}", "ttl=1")
 Me.VLCPlugin1.addTarget "mms://livewm.fplive.net/ffnet/212.3.240.70_0.0.115.1", Voptions, VLCPlayListReplace, 0
 Me.VLCPlugin1.play
------------------------------------------------------------------------------------

Rien se passe , rien a l'ecran, pas d'erreur , pas de fichier créer ... :(

En te remerciant a l' avance

Amicalement,

espadon
Commenter la réponse de espadon2
espadon2 71 Messages postés jeudi 19 juin 2003Date d'inscription 21 octobre 2008 Dernière intervention - 8 févr. 2007 à 11:23
0
Utile
marche pas mieux en c# :(

-------------------------------------------------------------
string[] Voption;

String option =
"sout=#transcode{vcodec=";option +=

"mp4v,vb=512}:duplicate{dst=std{access=file,mux=mp4";option +=

",url=d:\nono.avi},dst=display}";Voption =

new
String[] { option};

this.axVLCPlugin1.addTarget(
"mms://livewm.fplive.net/ffnet/212.3.240.70_0.0.115.1", Voption, AXVLC.
VLCPlaylistMode.VLCPlayListInsert, 0);

this.axVLCPlugin1.play();
----------------------------------------------

J' enregsitre bien la chaine avec VLC directement ... je comprends plus rien

espadon
Commenter la réponse de espadon2
cs_Dowin 11 Messages postés mardi 5 octobre 2004Date d'inscription 15 avril 2008 Dernière intervention - 19 févr. 2007 à 23:53
0
Utile
Bonjour,

Est-ce que quelqu'un connait par hasard la ligne de code pour effectuer le désentrelacement d'une vidéo. Je pense que c'est dans la variable "option" du addtarget mais pas moyen de trouver le code qui fonctionne.

Merci à tous.

Dowin
Commenter la réponse de cs_Dowin
cs_fcolo 201 Messages postés mercredi 8 février 2006Date d'inscription 20 février 2007 Dernière intervention - 20 févr. 2007 à 09:39
0
Utile
Tu as essayé de rajouter dans l'option:
AVI demuxer :
--avi-interleaved, --no-avi-interleaved

Regardes les options ICI, tu dois surement trouvé ton bonheur en recherchant leur signification à droite à gauche.

f.colo
Commenter la réponse de cs_fcolo
veasnamuch 1 Messages postés mercredi 21 février 2007Date d'inscription 18 avril 2007 Dernière intervention - 18 avril 2007 à 03:08
0
Utile
Bonjour,

Je suis trés nouveau avec VLC. Je veux programmer une application in C# pour jouer des chansons de format .DAT, .AVI, .MPG,... J'avait chercher sur le net, mais j'arrive pas à faire marcher le program dévelopé par cboury (http://lopez.tuparles.free.fr/vlc/). J'essai de le faire moi même, en créent un nouveau project, j'ajoute le composant "VideoLAN VLC ActiveX Plugin v1" dans mon form et un boutton "Play".
J'écris le code pour se boutton comme ça :

private void cmdPlay_Click(object sender, EventArgs e){
string[] SCREEN = new string[3];
SCREEN[0] = "config="~/Application Data/vlc/vlcrc"";
SCREEN[1] = ":file-caching=300 :sout-udp-caching=200";
SCREEN[2] = ":sout=#duplicate{dst=display}";
axVLCPlugin1.addTarget(@"C:\4U.AVI", SCREEN, AXVLC.VLCPlaylistMode.VLCPlayListInsert , -666);
axVLCPlugin1.play();
}

mais au moment de exécution du project, et je clique sur le boutton Play, rien s'affiche. Je ne sais pas, qu'est ce qu'il se passe avec mon code. Est ce que vous pouvez me guider pour se fair marcher cette truc?

Mercie,


veasna
Commenter la réponse de veasnamuch
ouned 3 Messages postés samedi 4 janvier 2003Date d'inscription 22 août 2009 Dernière intervention - 22 août 2009 à 14:55
0
Utile
Bonjour,

J'ai sensiblement le même problème que certains d'entres vous. J'utilise l'activex vlc donc, mais pas la classe LibVlc.

J'ai accès à un flux udp que je souhaiterais enregistrer.

Voici quelques parties de mon code :

String[] Vopts = new String[] {
":avi-interleaved :no-avi-interleaved",
":sout=#duplicate{dst=display,dst=std{access=file{append},mux=mp4,dst="C:\\test.avi"}}",
};

puis

axVLCPlugin1.addTarget(url, ((Vopts.Length > 0) ? Vopts : null), AXVLC.VLCPlaylistMode.VLCPlayListReplaceAndGo, 0);
axVLCPlugin1.playlistNext();

Le flux s'affiche bien, j'ai testé quelques options qui semblent marcher... seul hic, aucun fichier n'est créé :(

Je tourne sur WinXP SP3, Visual C# Express 2008, vlc 1.0.1.

Est-ce que quelqu'un aurait l'amabilité de me mettre dans la bonne voie svp ?
Commenter la réponse de ouned
goffle 78 Messages postés mercredi 11 mai 2005Date d'inscription 3 juillet 2012 Dernière intervention - 25 août 2009 à 22:08
0
Utile
Bonjour,

Même problème.
J'arrive pas à enregistrer ni a diffusé quoi que ce soit ... même avec la source de fcolo...

Je ne vois pas d'où ca peut venir ^^

ouned tiens nous au courant si tu y arrive, j'en ferais de même ...
Commenter la réponse de goffle
survcopt 221 Messages postés mardi 27 mai 2003Date d'inscription 12 juillet 2012 Dernière intervention - 18 févr. 2010 à 11:25
0
Utile
Est-il possible d'incruster en temps réel des données sur le flux video ?



www.survey-copter.com
Commenter la réponse de survcopt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.