Salut,
J'utilise vlc en ligne de commande afin de transformer une image en flux vidéo. J'utilise cette commande :
Cette commande fonctionne très bien et je souhaiterais l'utiliser via java.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2vlc -I dummy fake: vlc:quit --sout=\"#transcode:std\" --fake-duration=40 --fake-deinterlace --fake-deinterlace-module=blend --sout-transcode-vcodec=... --sout-ffmpeg-qmin=3 --sout-ffmpeg-qmax=3 --sout-standard-access=file --sout-standard-mux=raw --sout-standard-dst=/... --fake-width=1024 --fake-height=576 --fake-aspect-ratio=16:9 --fake-file=...
J'utilise donc ceci :
Ce code fonctionne aussi très bien. L'inconvénient de cette méthode est qu'elle prend un fichier en entrée (avec l'option --fake-file )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 String command = "..."; Runtime runtime = Runtime.getRuntime(); String[] args = { "/bin/sh", "-c", command }; final Process exec = runtime.exec(args);
J'aimerai donc que plutot que de prendre un fichier en entrée elle prenne un flux. J'ai donc fait ceci :
Mais elle ne fonctionne pas. Sur le flux d'erreur je peux lire qu'il manque l'option --fake-file...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 String command = "..."; // la meme commande mais sans l'option --fake-file Runtime runtime = Runtime.getRuntime(); String[] args = { "/bin/sh", "-c", command }; final Process exec = runtime.exec(args); FileInputStream fis = new FileInputStream(new file("image.png"); OutputStream os = exec.getOutputStream(); byte buffer[] = new byte[8192]; int bytesRead; while ((bytesRead = is.read(buffer)) != -1) { os.write(buffer, 0, bytesRead); }
Savez vous comment communiquer avec la commande grâce au flux outputstream ?
Merci.
Partager