我正在使用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地址(http://127.0.0.1:5555
)而不是MRL打开的。
在这里,它显示了客户端如何打开流的示例。
关于我在做什么错的任何猜测吗?还有解决方法吗?
提前致谢!
您使用的VLC版本与您使用的vlcj版本不兼容。
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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句