从字符串创建 MPD 文件

Create MPD file from String

我已经成功地创建了一个 MPD 文件,当通过 URL 馈送到 ExoPlayer 2.6.0 时可以完美播放(MPD 托管在测试中服务器)。

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

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

所以您需要提供一个 DataSource.Factory 来创建一个数据源来读取您的清单。请参阅以下代码段中的 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());
    }
};