【问题标题】:Netflix style next episode for Exoplayer LeanbackExoplayer Leanback 的 Netflix 风格下一集
【发布时间】:2021-02-15 20:25:54
【问题描述】:

我正在使用leanback 库开发一个Android TV 应用程序。我能够使用 Exoplayer 集成 VideoPlaybackActivty。我的一个要求是当当前视频还剩大约 1 分钟结束时,我需要对服务器进行 Rest 调用以获取下一个要播放的视频,然后我想在右下角显示下一个视频缩略图屏幕。非常类似于 Netflix 的“下一集正在播放……”的功能。

我的问题是,我怎样才能知道视频是否只剩下 1 分钟。另外,如何在屏幕上显示“播放下一个叠加层”?目前我的 activity_videoplayback.xml 如下所示。

<?xml version="1.0" encoding="utf-8"?>

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextureView
        android:id="@+id/texture_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center" />

    <fragment
        android:id="@+id/playback_controls_fragment"
        android:name="com.myapp.ui.playback.VideoPlaybackFragment"
        android:tag="@string/playback_tag"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/stream_progressbar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:indeterminateTint="@color/orange"
        android:visibility="gone" />

</merge>

非常感谢您的帮助。

【问题讨论】:

    标签: android android-layout exoplayer leanback


    【解决方案1】:

    ExoPlayer 目前不提供进度更新监听器 - 引用的原因是它会占用过多的 CPU 来持续引发进度事件。请在此处查看有关 ExoPlayer 问题跟踪器的讨论,并注意该问题目前被视为已关闭(2021 年 2 月):

    https://github.com/google/ExoPlayer/issues/3980

    建议的方法是构建一个处理程序来轮询玩家并使用 player.getCurrentPosition() 查询当前位置。

    为了完整起见,如果您还在查看 HTML5 视频,例如在 WebView 中,您可以检查视频长度,然后使用进度事件检查距离结束后的 1 秒 - 这是“标准”HTML5 和javascript 因此应该适用于任何使用 HTML5 视频元素的框架。

    代码可能如下所示:

    const yourVideo = document.querySelector('yourVideoID');
    
    //Create the event handler
    function handleProgressEvent(event) {
        //Check if video has reached last 10 seconds
        if (yourVideo.currentTime > (yourVideo.duration - 10.0)) {
        // DO your work to prepare the next video here
        
        }
    }
    
    // Add the event listener to your video
    yourVideo.addEventListener('progress', handleProgressEvent);
    

    【讨论】:

    • 非常感谢。知道如何添加一个小矩形图像(按钮)的布局,该图像将在最后弹出显示下一个视频的缩略图?
    • ExoPlayer 允许您自定义现有控件或添加新控件:exoplayer.dev/ui-components.html
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 2017-07-07
    • 2020-08-23
    • 2020-03-26
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多