【发布时间】:2021-02-03 06:36:53
【问题描述】:
我已经实现了自定义 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) 函数,将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
然后玩家开始以readLength 请求16384。视频初始化需要几秒钟。
有没有办法告诉玩家阅读更大的块? 或者也许有办法告诉 MatroskaExtractor 忽略一些不需要的东西?我仍然需要寻找
【问题讨论】:
标签: java android video datasource exoplayer