![](/img/trans.png)
[英]What is the best way to return big chunks of binary data from a webservice?
[英]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.