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

标签 android kotlin exoplayer2.x

我需要从 exoplayer 中找到流媒体视频比特率,但似乎这段代码没有显示真实比特率

bitrateEstimate = bandwidthMeter.bitrateEstimate

最佳答案

Exoplayer 提供 BandwidthMeter 事件的监听器 here .

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

Called periodically to indicate that bytes have been transferred or the estimated bitrate has changed. Note: The estimated bitrate is typically derived from more information than just bytes and elapsedMs.

Parameters:

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));
    }
});

关于android - 如何从 ExoPlayer2 中的实时视频中获取比特率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59355217/

相关文章:

Android GridLayout-以编程方式覆盖整个屏幕

android - 努力获取相同的 ViewModel 实例

android - Exo 玩家添加加注/发送分析事件总花费时间

java - 如何在不使用android :configChanges的情况下让ExoPlayer在设备旋转时恢复视频播放

android - 为什么在设置所有者设备应用程序时无法创建受限配置文件?

android - Salesforce 移动 sdk 抛出错误 com.android.volley.servererror,基本网络执行请求 201

android - 如何更改 Material slider 字体

java - android - 处理异常以更新 UI

android - 无法解析符号 PlayerView

Android RotateAnimation 完成