exoplayer - 从后台线程还是从主 ui 线程使用 exoplayer 更好?

标签 exoplayer

为了避免应用程序中的任何 SCSS ,从后台线程使用 exoplayer 还是从主 ui 线程使用它更好?

注意:当我在主 ui 线程中创建一个 simpleExoPlayer 时:

// 1. Create a default TrackSelector
Handler mainHandler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
    new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
    new DefaultTrackSelector(videoTrackSelectionFactory);

// 2. Create the player
SimpleExoPlayer player =
    ExoPlayerFactory.newSimpleInstance(context, trackSelector);

然后花了 90 毫秒 !!它太慢了,我会有几次丢帧,导致我的动画出现抖动。也在做
// Measures bandwidth during playback. Can be null if not required.
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,
    Util.getUserAgent(context, "yourApplicationName"), bandwidthMeter);
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
    .createMediaSource(mp4VideoUri);
// Prepare the player with the source.
player.prepare(videoSource);

带走了 20 毫秒 !它也慢到慢得多,我将再次丢帧

最佳答案

ExoPlayer 的内部处理线程 - 因此在主(应用程序)线程上调用大多数 API 是安全的。

来自 documentation :

It is recommended that ExoPlayer instances are created and accessed from a single application thread. The application's main thread is ideal. Accessing an instance from multiple threads is discouraged, however if an application does wish to do this then it may do so provided that it ensures accesses are synchronized.



ExoPlayer Threading Model Diagram

关于exoplayer - 从后台线程还是从主 ui 线程使用 exoplayer 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48498847/

相关文章:

Android Kotlin - 从今天开始如何使用 ExoPlayer SimpleCache

通过 ExoPlayer 进行 Android 流式传输

android - Exoplayer Mediaplayer Android延迟应用PlaybackParameters

android - 如何将搜索栏添加到 Exoplayer exo_playback_control_view.xml

android - 在Android中,使用exoplayer,如何用与设备不具有相同宽高比的视频填充surfaceview?

android - Exoplayer 无法加载 HLS 视频的字幕

android - Exoplayer 通知未清除

java - 不推荐使用 Player.EventListener 如何在 Java 中使用而不是 Player.Listener

android - Exoplayer Analytics,获取分析的准确方法

android - 如何在 Exoplayer 中顺序播放视频 block