我正在尝试使用 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
例如,上面的示例视频包含英文字幕、印地语音轨和英文音轨。那么我如何提取这些曲目?
我使用了https://mediaarea.net/en/MediaInfo并使用以下方法来获取视频信息。
mediaInfo.get("sample.mp4", MediaInfo.StreamKind.VIDEO, 0, "Format", MediaInfo.InfoKind.TEXT, MediaInfo.InfoKind.NAME)
此问题的完整解决方案在此列出无法使用 MediaInfo 从视频中提取参数