Reproduzir mĂ­dia usando a biblioteca VLCj

Antecedentes


(vocĂŞ pode pular imediatamente e ir para o prĂłximo item)

Ao aprender Java, imediatamente após eu dominar o Swing, ficou interessante: "Mas como reproduzir áudio ou vídeo?". Eu vasculhei o Google por um longo tempo, desenterrei várias bibliotecas lá que, em teoria, deveriam me dar exatamente o que eu quero. Mas, como a prática demonstrou, a maioria dessas bibliotecas lê um número muito pequeno de formatos e não é muito conveniente de usar. Depois de vasculhar alguns dias, finalmente encontrei algo que, em teoria, deveria me ajudar com a solução do problema. A biblioteca VLCj pega codecs do VLC media player e reproduz arquivos com eles. Mais um dia de sofrimento com um tutorial no site oficial e finalmente consegui começar a reproduzir o arquivo de vídeo no JFrame.

Vamos ao que interessa:


1. Baixe a biblioteca em si (é melhor usar a versão mais recente, pois há problemas de compatibilidade)

2. Se você ainda não instalou o VLC media player, será necessário fazer o download e instalá-lo. Você pode baixá-lo no site oficial do VideoLan (é melhor usar a versão mais recente, ela contém mais codecs).

3. IDE, eu uso o Eclipse.

Primeiro, crie um novo projeto e denomine-o, por exemplo, “MediaPlayer”.

Agora abra a pasta MediaPlayer na área de trabalho do eclipse e descompacte o arquivo baixado com a biblioteca nessa pasta.

Além disso, no Eclipse, nas configurações do seu projeto, clique em "Incluir JARs Externos" e, na janela que é aberta, localize e selecione o arquivo vlcj-3.0.1.jar. Escolha ELE E ELE SOMENTE .

Portanto, a biblioteca foi conectada ao projeto. Em seguida, precisamos criar uma instância da classe. Por exemplo, crie Test.java (espero que esse processo não precise ser explicado a ninguém).

Temos uma classe vazia com aproximadamente o seguinte conteĂşdo:

public class Test { public static void main(String[] args) { } } 

Em seguida, precisamos criar um JFrame no qual queremos exibir nosso vídeo. Também criamos um JPanel e colocamos o Canvas nele, que usamos como superfície para o nosso player de vídeo.

 public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); } } 

Então, a parte visual está pronta. Em seguida, voltamos diretamente para a biblioteca e o player VLC. E, na verdade, crie o próprio jogador em nosso quadro.

 NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\VideoLAN\VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); 

Aqui, indicamos o caminho para o VLC player (mais especificamente, os arquivos libvlc.dll, libvlccore.dll e a pasta plugins). Criamos um media player avançado (ele tem um conjunto maior de recursos do que apenas um "media player"), atribuímos a ele uma superfície, indicamos o caminho para o arquivo de vídeo, preparamos o arquivo para reprodução e, na verdade, o reproduzimos.

Como resultado, seu código será mais ou menos assim:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import uk.co.caprica.vlcj.binding.LibVlc; import uk.co.caprica.vlcj.player.MediaPlayerFactory; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy; import uk.co.caprica.vlcj.runtime.RuntimeUtil; public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files/VideoLAN/VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); } } 

Lembre-se de que:
- Seu caminho para o VLC media player pode ser diferente.
- O caminho para o seu vĂ­deo pode variar.

Por conveniência, você pode copiar os arquivos necessários do VLC media player para o seu projeto. Isso também elimina a necessidade de instalar o VLC nos computadores em que seu programa funcionará.

No começo, tive dificuldade em reproduzir arquivos com cirílico no nome ou no caminho. Se você encontrar as mesmas dificuldades, clique com o botão direito do mouse na instância da sua classe, acesse as configurações e altere a codificação para UTF-8

Source: https://habr.com/ru/post/pt434126/


All Articles