【问题标题】:Create MPD file from String从字符串创建 MPD 文件
【发布时间】:2018-02-05 15:36:17
【问题描述】:

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

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

【问题讨论】:

    标签: android exoplayer exoplayer2.x


    【解决方案1】:

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

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

    【讨论】:

    • 如何定义 mediaDataSourceFactory,如果我的选择是 b) 内存清单,那么如何处理 dashMediaSourceFactory.createMediaSource(manifestUri) 中的 manifestUri;请提供更多解释,因为我也被卡住了
    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多