如何从ExoPlayer2中的实时视频中获取比特率

问题描述 投票:1回答:1

我需要从exoplayer中找到流式视频的比特率,但是此代码似乎没有显示真实的比特率

bitrateEstimate = bandwidthMeter.bitrateEstimate
android kotlin exoplayer2.x
1个回答
0
投票

Exoplayer提供BandwidthMeter事件here的侦听器。

void onBandwidthSample(int elapsedMs,
                       long bytesTransferred,
                       long bitrateEstimate)

定期调用以指示已传输字节或估算的比特率已更改。注意:估计的比特率是通常来自更多信息,而不仅仅是字节和elapsedMs。

参数:

elapsedMs - The time taken to transfer bytesTransferred, in milliseconds. This is at most the elapsed time since the last callback, but may be less if there were periods during which data was not being transferred.
bytesTransferred - The number of bytes transferred since the last callback.
bitrateEstimate - The estimated bitrate in bits/sec.

您可以在代码中使用它,例如:

Handler handler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter.Builder(MainActivity.this).build();
bandwidthMeter.addEventListener(handler, new BandwidthMeter.EventListener() {
    @Override
    public void onBandwidthSample(int elapsedMs, long bytesTransferred, long bitrateEstimate) {
        Log.d(TAG, "elapsedMs: " + elapsedMs);
        Log.d(TAG, "bytes transferred: " + bytesTransferred);
        Log.d(TAG, "Average bitrate (bps) = " + (double) (bytesTransferred * 8) / (elapsedMs / 1000));
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.