如何在exoplayer2.x中创建自己的自定义数据源工厂?

我已经加密媒体文件,这是在播放之前被解密。 在exoplayer 1.x中,我实现了自己的自定义数据源类,该类扩展了UriDatasource,其中解密了文件,但在exoplayer 2.x中没有这样的类,所有数据源类都是final的,不能在我的数据源文件中实现。

如何编写自己的自定义文件数据源工厂使用我们的自定义文件源?

请帮助我。

谢谢。

就像Aes128DataSource一样,你可以实现DataSource接口,并在其中保存一个DataSource。 科特林代码是这样的:

class SecDataSource(upstream: DataSource): DataSource{ val upstream = upstream override fun open(dataSpec: DataSpec) = upstream.open(dataSpec) override fun read(buffer: ByteArray, offset: Int, readLength: Int){ var size = upstream.read(buffer, offset, readLength) //decrypt the buffer here decrypt(buffer) return size } override fun getUri() = upstream.uri override fun close() = upstream.close() }