Cómo grabar desde Java utilizando la aplicación VLC y la librería "vlcj"
Partiremos de que vamos a utilizar Maven, la librería vlcj y la aplicación VLC (debe estar instalada en nuestro equipo). Lo que vamos a hacer es grabar la entrada de micrófono manejando VLC desde nuestro código Java. Cuidado con las versiones de vlcj (v2.4.1), jna y jna-platform (v3.5.2). Existen versiones posteriores de las mismas, pero pueden ser incompatibles entre sí. Con las que he puesto funciona, hay otras que dan problemas.
En nuestro pom.xml de Maven:
...
<properties>
<jna.version>3.5.2</jna.version>
<slf4j.version>1.7.10</slf4j.version>
</properties>
...
<dependency>
<groupId>uk.co.caprica</groupId>
<artifactId>vlcj</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>${jna.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
...
Ahora veamos el código para iniciar la grabación
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files/VideoLAN/VLC");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
JFrame frame = new JFrame("Gemma Recorder: Don't close");
frame.setContentPane(mediaPlayerComponent);
frame.setLocation(100, 100);
frame.setSize(1050, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//Save video
File dir = new File("URL DE CARPETA DESTINO DE GRABACIONES");
DateFormat df = new SimpleDateFormat("yyyyMMdd-HHmmss");
String fileName = dir.getAbsolutePath() + "/Capture-" + df.format(new Date()) + ".mp3";
System.out.println("Grabando en " + fileName);
String mediaURL = "dshow://";
mediaPlayerComponent.getMediaPlayer().playMedia(mediaURL, ":sout=#transcode{vcodec=none,venc=x264{cfr=16},scale=1,acodec=mp3,ab=160,channels=2,samplerate=44100}:file{dst=" + fileName + "}");
Cuando queramos detener la grabación, simplemente,
mediaPlayerComponent.getMediaPlayer().stop();
A continuación, enlaces a la documentación oficial de comandos VLC
https://wiki.videolan.org/VLC_command-line_help/
https://wiki.videolan.org/Documentation:Command_line/
https://wiki.videolan.org/Command_line/
A continuación, enlaces a la documentación oficial de comandos VLC
https://wiki.videolan.org/VLC_command-line_help/
https://wiki.videolan.org/Documentation:Command_line/
https://wiki.videolan.org/Command_line/
No hay comentarios:
Publicar un comentario