使用VLCJ计算媒体文件的比特率

时间:2013-11-13 15:26:17

标签: java vlcj bitrate

要远程播放媒体文件,我使用了UDP数据报。 我向客户端发送40 kb的数据包,但要同步我需要的所有客户端来查找每个数据包的持续时间,这样如果数据包丢失,我可以使用SocketTimeOutExcpetion在客户端暂停播放器。 为了计算每个数据包的持续时间,我使用了以下等式

        duration of packet= (duration of whole file)/SizeOfPacket

其中,

        duration of file = (length of file)/bitrate *8

目前我在ubuntu中使用mediainfo包计算比特率。

如何使用VLCJ API获取音频或视频文件的比特率?

1 个答案:

答案 0 :(得分:1)

首先你需要解析或播放媒体,播放媒体当然不太可取,但视媒体情况而定 - 可能是必要的 - 假设解析适用于你的媒体:

mediaPlayer.parseMedia();

解析方法是同步的。

如果解析不起作用,那么很遗憾,您需要在信息可用之前播放媒体。

根据所使用的媒体编解码器,曲目信息可能会在一段时间后立即或异步提供 - 因此您可能需要监听媒体播放器事件甚至睡眠一段时间(讨厌,但有时需要)。

接下来,您将获得曲目信息:

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

然后您可以迭代返回的列表。

for (TrackInfo trackInfo : audioTrackInfo) {
    int bitRate = trackInfo.bitRate();
    // ...
}

for (TrackInfo trackInfo : videoTrackInfo) {
    int bitRate = trackInfo.bitRate();
    // ...
}

更复杂的是mediaPlayer.parse()几乎肯定无法正常工作,如果您正在播放网络流,甚至可能会挂起。