簡體   English   中英

Exoplayer 自定義數據源:有沒有辦法讓玩家請求大塊數據?

[英]Exoplayer custom DataSource: Is there a way to make player ask for big chunks of data?

我已經實現了自定義DataSource以與ProgressiveMediaSource一起使用。

private MediaSource buildMediaSource() {
    MyDataSource.Factory factory = new MyDataSource.Factory(getItem());
    return new ProgressiveMediaSource.Factory(factory).createMediaSource(Uri.EMPTY);
}

當我嘗試打開多個 MKV 文件時,播放器多次調用read(byte[] buf, int offset, int readLength) function,將1作為readLength傳遞。

這導致視頻開始播放前的幾分鍾初始化時間(播放器想要在我擁有的視頻上按 1 個字節讀取 600000 次)

為了進行測試,我設置了自己的 http 服務器並為該視頻創建了一個 uri,然后我將其使用如下:

new ProgressiveMediaSource.Factory(new DefaultHttpDataSourceFactory("sdfsdfds")).createMediaSource(uri); // uri looks like http://127.0.0.1:34567/video.mkv

然后播放器開始請求16384作為readLength 視頻初始化需要幾秒鍾。

有沒有辦法讓我告訴玩家閱讀更大的塊? 或者也許有辦法告訴 MatroskaExtractor 忽略一些不需要的東西? 我仍然需要尋找

我的問題是,對於每個 read(),我都必須從本機庫中調用一些函數,導致將 java 結構轉換為 c++,然后返回到 java 以獲得響應。

對於僅 1 個字節,這是非常繁重的操作。 快速測試表明,在 java 端預加載大塊數據可將初始化速度從幾分鍾縮短到幾秒鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM