VLCJ Can'在客户端使用http打开音频流

时间:2014-10-08 20:29:47

标签: java http audio streaming vlcj

我在服务器和客户端之间使用VLCJ进行音频流传输。 服务器端都设置为运行一次我可以通过使用vlc本身打开流,我可以监听我在服务器上选择的任何文件。 但是,在客户端,我正在做以下事情:

String url = "http://127.0.0.1:5555";
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer();
mediaPlayer.startMedia(url);

但是根本没有任何声音。如果我在终端中运行vlc http://127.0.0.1:5555,它会打开vlc并播放服务器正在流式传输的音乐曲目,没有任何问题。

最近,我发现问题出在路径上。通过使用System.out.println(mediaPlayer.mrl());,它显示它正在打开 file:///home/user/workspace/audioProject/http%3A//127.0.0.1%3A5555而不是直接来自HTTP地址的MRL(http://127.0.0.1:5555)。

Here,它显示了客户端如何打开流的示例。

对我做错了什么的猜测?还有一个解决方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

您使用的是与您正在使用的vlcj版本不兼容的VLC版本。

LibVLC中有两种设置媒体的方法,一种是设置“本地”文件媒体,另一种是“位置” - 实质上是一个URL:

libvlc_media_new_location(instance, media);
libvlc_media_new_path(instance, media);

在早期版本的VLC中,只需使用其中一个功能即可设置媒体,无论是基于本地文件的媒体还是URL。这一个函数libvlc_media_new_path适用于两种类型的媒体。

最近版本的VLC发生了变化(我不记得具体是哪个版本)。

那时,由于VLC的这种变化,vlcj被改为猜测媒体类型(文件或URL)并调用相应的LibVLC函数。

因此,解决方案是使用兼容版本的VLC / vlcj。

vlcj的更改版本为2.2.0,但我当然建议您使用最新版本的vlcj,在编写本文时为3.0.1。