从String创建MPD文件

时间:2018-02-05 15:36:17

标签: android exoplayer exoplayer2.x

我设法创建了一个MPD文件,当通过URL(MPD托管在测试服务器中)提供给 ExoPlayer 2.6.0 时,该文件可以完美播放。

但是,我需要在Android中创建此MPD文件并将其提供给ExoPlayer,而无需将文件请求到服务器。到目前为止,我已经尝试了解课程DashManifest& DashManifestParser没有成功。有关如何在Android中创建文件并将其直接提供给ExoPlayer的任何想法吗?

1 个答案:

答案 0 :(得分:1)

播放DASH流时,您需要创建DashMediaSource.Factory。第一个参数是DashChunkSource,它读取清单定义的媒体文件。第二个参数是DataSource.Factory来读取清单。

因此,您需要提供一个DataSource.Factory,它创建一个DataSource来读取您的清单。请参阅以下代码段中的manifestDataSourceFactory

DashMediaSource.Factory dashMediaSourceFactory = new DashMediaSource.Factory(
        new DefaultDashChunkSource.Factory(mediaDataSourceFactory),
        manifestDataSourceFactory);
dashMediaSourceFactory.createMediaSource(manifestUri);

a)本地磁盘上的静态mpd

如果您的清单存储为本地文件,您可以使用DefaultDataSourceFactory并将文件路径作为manifestUri传递:

DataSource.Factory manifestDataSourceFactory = new DefaultDataSourceFactory(context, userAgent);

b)内存中清单

如果您的清单在内存中,您可以提供带有自定义DataSource.Factory的ByteArrayDataSource:

DataSource.Factory manifestDataSourceFactory = new DataSource.Factory() {
    @Override
    public DataSource createDataSource() {
        return new ByteArrayDataSource(manifestString.getBytes());
    }
};