Media3 中 Window 的時間相關屬性詳解

AndroidX Media3 的 Timeline.Window 類中,與時間相關的屬性描述了媒體播放窗口(window)在時間維度上的關鍵信息。這些屬性幫助開發者理解媒體的播放范圍、起始點、持續時間以及與設備時間或直播流的同步關系。

Timeline.Window 的時間相關屬性如下:

屬性名類型描述
presentationStartTimeMslong媒體可播放的最早時間(毫秒,相對于 Unix 紀元),通常用于直播,可能為 C.TIME_UNSET
windowStartTimeMslong窗口的實際開始時間(毫秒,相對于 Unix 紀元),通常用于直播,可能為 C.TIME_UNSET
elapsedRealtimeEpochOffsetMslong窗口開始時間與設備 elapsedRealtime() 的偏移量(毫秒),用于時間同步,可能為 C.TIME_UNSET
defaultPositionMslong默認播放起始位置(毫秒),相對于窗口開始,通常為 0 或上次播放位置。
durationMslong窗口總持續時間(毫秒),可能是 C.TIME_UNSET(如直播流)。
positionInFirstPeriodMslong窗口起始位置相對于第一個周期(period)的偏移量(毫秒)。

C.TIME_UNSET(值為 -9223372036854775807L)表示時間未設置,常用于直播或未完全加載的媒體。屬性分為絕對時間(相對于 Unix 紀元,如 presentationStartTimeMs)和相對時間(相對于窗口內部,如 defaultPositionMs)。

presentationStartTimeMs
  • 類型long(毫秒)
  • 含義
    • 表示媒體內容可播放的最早時間,基于 Unix 紀元(1970-01-01 00:00:00 UTC)。
    • 通常用于直播流,定義直播內容的理論開始時間。
    • 如果未設置(C.TIME_UNSET),表示時間未知(常見于點播或未加載完成的直播)。
  • 用途
    • 幫助播放器確定直播流的有效時間范圍。
    • 用于計算直播流的延遲(currentPosition - presentationStartTimeMs)。
  • 在窗口時間軸上的位置
    • 通常是時間軸的最左側點,表示窗口可播放的最早時間。
    • 如果為 C.TIME_UNSET,在時間軸上可能是未定義的起點(用虛線或注釋表示)。
  • 示例
    • 假設直播流在 2023-10-01 10:00:00 UTC 開始,presentationStartTimeMs 可能為 1696154400000(毫秒)。
windowStartTimeMs
  • 類型long(毫秒)
  • 含義
    • 表示窗口的實際開始時間,基于 Unix 紀元,可以落后presentationStartTimeMs一天或者更久,是window實際開播時間。
    • 通常用于直播流,表示播放器可以訪問的直播內容的開始時間(可能比 presentationStartTimeMs 稍晚)。
    • 如果未設置(C.TIME_UNSET),表示時間未知(常見于點播或直播緩沖區未初始化)。
  • 用途
    • 確定直播窗口的實際可播放范圍。
    • elapsedRealtimeEpochOffsetMs 結合,用于同步設備時間和直播時間。
  • 在窗口時間軸上的位置
    • 位于 presentationStartTimeMs 之后(或重疊),是時間軸的實際起點
    • 在直播場景中,它通常是播放器開始加載內容的時刻。
    • 如果為 C.TIME_UNSET,在時間軸上可能是未定義的起點。
  • 示例
    • 直播流可能在 presentationStartTimeMs 后幾秒開始緩沖,windowStartTimeMs1696154405000(比 presentationStartTimeMs 晚 5 秒)。
elapsedRealtimeEpochOffsetMs
  • 類型long(毫秒)
  • 含義
    • 表示 windowStartTimeMs(Unix 紀元時間)與設備 elapsedRealtime()(設備啟動后的毫秒數)之間的偏移量。
    • 公式:windowStartTimeMs = elapsedRealtime() + elapsedRealtimeEpochOffsetMs
    • 用于同步直播流的絕對時間與設備本地時間。
    • 如果未設置(C.TIME_UNSET),表示無法同步(常見于點播或直播未提供時間信息)。
  • 用途
    • 在直播場景中,幫助播放器將本地時間轉換為直播流的絕對時間。
    • 用于精確計算直播流的當前播放位置(currentPositionMs + elapsedRealtimeEpochOffsetMs)。
  • 在窗口時間軸上的位置
    • 不在時間軸上的直接點,而是作為 windowStartTimeMs 的參考偏移。
    • 在圖中通常標注為時間軸外的箭頭或注釋,指向 windowStartTimeMs,表示偏移關系。
  • 示例
    • 如果 windowStartTimeMs = 1696154405000,當前 elapsedRealtime() = 1000000,則 elapsedRealtimeEpochOffsetMs = 1696154405000 - 1000000
defaultPositionMs
  • 類型long(毫秒)
  • 含義
    • 表示播放器默認開始播放的位置,相對于窗口的邏輯起點(通常是 windowStartTimeMs 或窗口的 0 點)。
    • 對于點播,通常為 0(從頭播放)或上次播放位置(續播)。
    • 對于直播,通常接近窗口的末端(最新可用內容)。
  • 用途
    • 確定播放器初始化時的播放位置。
    • 用戶可以通過 seekTo(defaultPositionMs) 跳轉到該位置。
  • 在窗口時間軸上的位置
    • 位于時間軸的起始段,通常接近窗口的邏輯起點(0mswindowStartTimeMs)。
    • 在點播中,它可能是時間軸的 0 點;在直播中,它可能靠近 durationMs 的末端。
  • 示例
    • 點播視頻:defaultPositionMs = 0(從頭開始)。
    • 直播流:defaultPositionMs = 30000(距離窗口末端 30 秒)。
durationMs
  • 類型long(毫秒)
  • 含義
    • 表示窗口的總持續時間(毫秒),從邏輯起點到結束。
    • 對于點播,是視頻的總長度(如 3600000ms 表示 1 小時)。
    • 對于直播,可能是緩沖區長度,或 C.TIME_UNSET(表示未知,如無限直播)。
  • 用途
    • 確定播放器可播放的時間范圍。
    • 用于進度條顯示和 seek 操作(seekTo(positionMs < durationMs))。
  • 在窗口時間軸上的位置
    • 表示時間軸的整個長度,從邏輯起點(通常 defaultPositionMs 或 0)到結束點。
    • 如果為 C.TIME_UNSET,時間軸末端可能是開放的(用箭頭或虛線表示)。
  • 示例
    • 點播:durationMs = 600000(10 分鐘視頻)。
    • 直播:durationMs = C.TIME_UNSET(無限直播)或 60000(60 秒緩沖區)。
positionInFirstPeriodMs
  • 類型long(毫秒)
  • 含義
    • 表示窗口的邏輯起點相對于第一個周期(Timeline.Period)的偏移量。
    • Timeline 由多個周期組成,每個周期可能代表媒體的一個片段(如 HLS 的分片)。
    • 該屬性定義窗口的起始點在第一個周期內的具體位置。
  • 用途
    • 用于多周期媒體(如 DASH、HLS)中,確定窗口與周期的相對位置。
    • 幫助播放器在周期邊界正確 seek 或切換。
  • 在窗口時間軸上的位置
    • 位于 defaultPositionMs 附近,通常是子偏移,表示窗口起點在第一個周期內的位置。
    • 如果窗口只有一個周期,positionInFirstPeriodMs 可能等于 defaultPositionMs
  • 示例
    • HLS 流,第一個周期為 10 秒,窗口從第 5 秒開始:positionInFirstPeriodMs = 5000

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82040.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82040.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82040.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Python爬蟲電商數據采集+數據分析】采集電商平臺數據信息,并做可視化演示

前言 隨著電商平臺的興起&#xff0c;越來越多的人開始在網上購物。而對于電商平臺來說&#xff0c;商品信息、價格、評論等數據是非常重要的。因此&#xff0c;抓取電商平臺的商品信息、價格、評論等數據成為了一項非常有價值的工作。本文將介紹如何使用Python編寫爬蟲程序&a…

工業相機的芯片CRA角度與鏡頭選型的匹配關系

工業相機的芯片CRA角度與鏡頭選型的匹配關系 Baumer工業相機?工業相機的芯片CRA角度的技術背景?工業相機的芯片CRA的信息CRA相差過大的具體表現怎樣選擇工業相機sensor的CRABaumer工業相機sensor的CRA工業相機的芯片CRA角度與鏡頭匹配好的優點 Baumer工業相機 工業相機是常用…

深度學習中常見的矩陣變換函數匯總(持續更新...)

1. 轉置操作 (Transpose) 概念&#xff1a;將矩陣的行和列互換應用場景&#xff1a; 在卷積神經網絡中轉換特征圖維度矩陣乘法運算前的維度調整數據預處理過程中的特征重排 原始矩陣 A [[1, 2, 3], 轉置后 A^T [[1, 4],[4, 5, 6]] [2, 5],[3, 6]]代碼…

day 14 SHAP可視化

一、原理——合作博弈論 SHAP&#xff08;SHapley Additive exPlanations&#xff09;是一種用于解釋機器學習模型預測結果的方法&#xff0c;它基于合作博弈論中的 Shapley 值概念。Shapley 值最初用于解決合作博弈中的利益分配問題。假設有 n 個參與者共同合作完成一項任務并…

從0開始學習大模型--Day03--Agent規劃與記憶

規劃&#xff08;planning&#xff09; 規劃&#xff0c;可以為理解觀察和思考。如果用人類來類比&#xff0c;當我們接到一個任務&#xff0c;我們的思維模式可能會像下面這樣: 1、首先會思考怎么完成這個任務。 2、然后會審視手頭上所擁有的工具&#xff0c;以及如何使用這…

使用 Couchbase Analytics Service 的典型步驟

下面是使用 Couchbase Analytics Service 的典型步驟&#xff0c;包括部署、配置、創建數據集、運行查詢以及監控優化等環節。 首先&#xff0c;您需要安裝并啟用 Analytics 服務&#xff1b;然后將節點加入集群并重平衡&#xff1b;接著在 Analytics 中映射數據服務的集合&am…

從零開始學習人工智能(Python高級教程)Day6-Python3 正則表達式

一、Python3 正則表達式 正則表達式是一個特殊的字符序列&#xff0c;它能幫助你方便的檢查一個字符串是否與某種模式匹配。 在 Python 中&#xff0c;使用 re 模塊來處理正則表達式。 re 模塊提供了一組函數&#xff0c;允許你在字符串中進行模式匹配、搜索和替換操作。 r…

MATLAB導出和導入Excel文件表格數據并處理

20250507 1.MATLAB使用table函數和writetable函數將數據導出Excel表格文件 我們以高斯函數為例子&#xff0c;高斯函數在數學和工程領域有著廣泛的應用&#xff0c;它的一般形式為&#xff1a; 其中是均值&#xff0c;決定了函數的中心位置&#xff1b; 是標準差&#xff0c;決…

推薦一組WPF自定義控件開源項目

.Net Core從零學習搭建權限管理系統教程 推薦一組WPF自定義控件開源項目。 項目簡介 這是基于WPF開發的&#xff0c;為開發人員提供了一組方便使用自定義組件&#xff0c;并提供了各種常用的示例。 包含組件&#xff1a;數據表格、屬性列表、樹形列表、選色器、單選框列表、…

allegro出gerber時,單擊Artwork并沒有彈窗的問題

使用allegro出gerber時&#xff0c;有時點擊 Artwork圖標并未如愿以償的彈出窗口。。。 可按下面嘗試恢復&#xff0c;注&#xff0c;刪除前可先備份該兩支文件。。。 看時間戳&#xff0c;刪除最近的下面標紅兩支文件即可。

常用設計模式在 Spring Boot 項目中的實戰案例

引言? 在當今的軟件開發領域&#xff0c;Spring Boot 以其高效、便捷的特性成為構建 Java 應用程序的熱門框架。而設計模式作為軟件開發中的寶貴經驗總結&#xff0c;能夠顯著提升代碼的可維護性、可擴展性和可復用性。本文將深入探討幾種常用設計模式在 Spring Boot 項目中的…

《饒議科學》閱讀筆記

《饒議科學》 《偷竊的生物學機制&#xff1a;&#xff08;有些&#xff09;小偷有藥可治》閱讀筆記 核心內容&#xff1a;探討偷竊狂&#xff08;kleptomania&#xff09;的生物學機制及相關研究。具體要點 偷竊狂的特征&#xff1a;患者不可抑制地反復偷竊個人不需要、與金錢…

從零開始搭建第一個Spring Boot應用:從入門到精通

1. Spring Boot簡介與核心概念 1.1 什么是Spring Boot&#xff1f; Spring Boot是Spring框架的一個擴展&#xff0c;它簡化了基于Spring的應用程序的初始搭建和開發過程。通過自動配置和約定優于配置的原則&#xff0c;Spring Boot讓開發者能夠快速啟動和運行項目。 通俗理解…

c# LINQ-Query01

文章目錄 查詢數據源標準查詢分兩類即時查詢已推遲流式處理非流式處理分類表聚合Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)Aggregate<TSour…

AI惡魔之眼使用說明書

AI惡魔之眼使用說明書 產品簡介 1.1 產品介紹 AI惡魔之眼是一款具備動態視覺效果與仿生眼睛模擬功能的智能顯示產品&#xff0c;可實現以下特性&#xff1a; 真實人眼模擬&#xff1a;支持虹膜樣式變換、眨眼動畫、瞳孔縮放等動態特效&#xff0c;仿真度高自定義內容上傳&am…

CAN報文逆向工程

在沒有DBC文件的情況下解析CAN報文獲取物理信息需要逆向工程和系統分析。以下是詳細步驟&#xff1a; 1. 數據采集與基礎分析 采集原始數據&#xff1a; 使用CAN分析工具&#xff08;如PCAN-Explorer、SavvyCAN或USB-CAN適配器配套軟件&#xff09;記錄車輛在不同狀態下的CAN數…

KL散度(Kullback-Leibler Divergence):概率分布差異的量化利器

目錄 1. 什么是KL散度?關鍵特點:2. KL散度的數學公式離散分布的KL散度公式:連續分布的KL散度公式:3. KL散度的計算示例示例1:離散分布示例2:連續分布(高斯分布)4. KL散度的核心性質1. 非對稱性2. 非負性3. 與熵的關系5. KL散度與相關性的關系1. KL散度 ≠ 相關性2. 間接…

二叉樹的遍歷與構造

唉&#xff0c;好想回家&#xff0c;我想回家跟饅頭醬玩&#xff0c;想老爸老媽。如果上天再給我一次選擇的機會&#xff0c;我會選擇當一只小動物&#xff0c;或者當棵大樹也好&#xff0c;或者我希望自己不要有那么多多余的情緒&#xff0c;不要太被別人影響&#xff0c;開心…

leetcode 141. Linked List Cycle

題目描述&#xff1a; 代碼&#xff1a; 用哈希表也可以解決&#xff0c;但真正考察的是用快慢指針法。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Soluti…

AI輔助DevOps與自動化測試:重構軟件工程效率邊界

隨著AI技術滲透至軟件開發生命周期&#xff0c;DevOps與自動化測試領域正經歷顛覆性變革。本文系統性解析AI在需求分析、測試用例生成、部署決策、異常檢測等環節的技術實現路徑&#xff0c;結合微軟Azure DevOps、Tesla自動駕駛測試等典型場景&#xff0c;探討AI如何突破傳統效…