使用VLCJ查找rtsp流的FPS和比特率

时间:2018-01-08 13:35:31

标签: java vlc libvlc vlcj

我正在使用vlcj创建媒体播放器。

我可以成功播放rtsp流。 但我想要显示流和#39;正在播放视频时的fps和比特率。

由于值可能是可变的,我需要在播放流时更新值。所以我需要玩家自己的数据。

可是:

List<TrackInfo> videoTrackInfo = mediaPlayer.getTrackInfo(TrackType.VIDEO);

在我的情况下返回null。

另外:

mediaPlayer.getRate();
mediaPlayer.getFps();

返回0.0(浮点数)和1.0(浮点数)。当然这不正确。

在VLC本身中,使用带有vbr的流,您可以看到该时刻的比特率。我希望也可以从vlcj中获取这些值。

由于

enter image description here

1 个答案:

答案 0 :(得分:0)

使用类似RTSP流的媒体,您正在播放的媒体实际上是某种播放列表&#34;。

播放列表没有比特率或FPS等等。

当您播放播放​​列表时,实际发生的是VLC或其插件会解析您的播放列表网址并生成&#34;子项目&#34;对于实际的媒体本身。通常,第一个这样的子项将是您想要的媒体流,并且默认情况下将播放该vlcj。

因此,请使用适用于子项的媒体播放器API方法。

例如,http://caprica.github.io/vlcj/javadoc/3.10.1/uk/co/caprica/vlcj/player/MediaPlayer.html#getSubItemTrackInfo-uk.co.caprica.vlcj.player.TrackType...-

处有mediaPlayer.getSubItemTrackInfo(),Javadoc

您需要侦听媒体播放器事件,以了解子项目的创建时间,并确保在此之前不要调用API。