无法使用exoplayer在不播放的情况下获取视频元数据

问题描述 投票:0回答:1

我正在尝试使用 exoplayer 获取视频元数据,而不进行播放,如文档

中所述

当我尝试运行时,我无法从本地视频文件获取音轨和字幕轨道列表。

MediaItem mediaItem = MediaItem.fromUri(videoUrl);
    ListenableFuture<TrackGroupArray> trackGroupsFuture = MetadataRetriever.retrieveMetadata(this, mediaItem);
    Futures.addCallback(trackGroupsFuture, new FutureCallback<TrackGroupArray>() {
                @Override
                public void onSuccess(TrackGroupArray trackGroups) {
                    for(int i = 0; i < trackGroups.length; i++){
                        String format = trackGroups.get(i).getFormat(0).sampleMimeType;
                        String lang = trackGroups.get(i).getFormat(0).language;
                        String id = trackGroups.get(i).getFormat(0).id;

                        if(format.contains("audio") && id != null && lang != null){
                            Log.d(TAG, "onSuccess: " + lang + " " + id);
                        }
                    }
                }

                @Override
                public void onFailure(Throwable t) {
                    //handleFailure(t);
                    Log.d(TAG, "onFailure: " + t);
                }
            }, executor);

有人可以帮忙吗?如何获取视频中可用的曲目列表。

这里是示例视频链接https://storage.googleapis.com/jlplayer/Dolittle.mkv

例如,上面的示例视频包含英文字幕、印地语音轨和英文音轨。那么我如何提取这些曲目?

metadata exoplayer2.x audiotrack
1个回答
0
投票

我使用了https://mediaarea.net/en/MediaInfo并使用以下方法来获取视频信息。

mediaInfo.get("sample.mp4", MediaInfo.StreamKind.VIDEO, 0, "Format", MediaInfo.InfoKind.TEXT, MediaInfo.InfoKind.NAME)

此问题的完整解决方案在此列出无法使用 MediaInfo 从视频中提取参数

© www.soinside.com 2019 - 2024. All rights reserved.