【问题标题】:VLCJ Can' t open audio streaming using http on client-sideVLCJ 无法在客户端使用 http 打开音频流
【发布时间】:2014-10-08 20:29:47
【问题描述】:

我正在使用 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,它显示了客户端如何打开流的示例。

关于我做错了什么的任何猜测?以及解决方法?

提前致谢!

【问题讨论】:

  • 我正在使用 VLCJ 2.1.0。这是日志:vlcj: (Info.java:103) |信息 | vlcj: 2.1.0 vlcj: (Info.java:104) |信息 | java: 1.8.0_20 Oracle Corporation vlcj: (DefaultMediaPlayer.java:1638) |调试 | setMedia(media=127.0.0.1:5555,mediaOptions=[]) vlcj: (DefaultMediaPlayer.java:1796) |调试 | mediaChanged(mediaPlayer=uk.co.caprica.vlcj.player.headless.DefaultHeadlessMediaPlayer@17ee8022,media=native@0x7f556c369fb0,mrl=file:///home/plut/eclipseWorkspace/audioSNMP/http%3A//127.0.0.1% 3A5555)

标签: java http audio streaming vlcj


【解决方案1】:

您使用的 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。

【讨论】:

  • 我将 VLCJ 更新到了 3.0.1,现在可以完美运行了。非常感谢!!
猜你喜欢
  • 2014-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多