je tente de lancer une instance du programme VideoLAN à partir d'une application java. L'une des façons que j'ai essayé de le faire est montré ici:blocs de programme externe lors de son exécution par Runtime exec
Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe\" \"http://www.dr.dk/Forms/Published/PlaylistGen.aspx?qid=1316859&odp=true\" :sout=#std{access=udp,mux=ts,dst=127.0.0.1:63928}");
Si j'exécute la commande au-dessus du programme vlc sera lancé et commencera une opération de diffusion en continu (il passe par connexion, mise en mémoire tampon puis phases de streaming).
Lorsque la commande est exécutée par Runtime exec (ou ProcessBuilder démarrer), le programme vlc se bloque quand il a atteint la fin de la phase de mise en mémoire tampon. Si tous les threads du programme Java sont terminés/exécutés, le programme vlc passera à la phase de streaming. Le processus Java ne se termine pas tant que le processus vlc n'est pas fermé, ce comportement est donc le résultat d'une sorte de couplage entre les processus.
ont essayé d'exécuter la commande indirectement par écrit dans un fichier .cmd, puis l'exécuter, mais les résultats dans le même comportement.
Toutes les idées sur la façon dont je peux éviter la pendaison de processus externe?
Est-ce votre désir de quitter le processus en cours d'exécution Java avec VLC ouvert, ou de faire mettre fin et laisser le fonctionnement du processus VLC? Je ne suis pas sûr qu'il se passe réellement un "couplage", puisque le processus s'exécute dans son propre espace, mais peut-être y a-t-il un contrôle de processus qui vous aidera à obtenir ce que vous recherchez. – jheddings