LibVlc android获取所有曲目

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

关于在Android上使用libvlc获取所有媒体轨道(视频音频和字幕)的过程,我找不到很多文档。

据我了解,我必须解析媒体,并且我正在这样做:

Media media = new Media(libVLC, Uri.parse(url));
media.setEventListener(new IMedia.EventListener() {
        @Override
        public void onEvent(IMedia.Event event) {
            switch (event.type){
                case IMedia.Event.ParsedChanged:
                    if(event.getParsedStatus() == IMedia.ParsedStatus.Done){
                        Log.i("App", "Parse done, track count " + media.getTrackCount());
                        Gson gson = new Gson();
                        for(int i=0; i<media.getTrackCount(); i++){
                            Log.i("App", "Track " + i + ": " + gson.toJson(media.getTrack(i)));
                        }
                    }
                    break;
            }
        }
    });
media.parseAsync();
vlc.setMedia(media);
vlc.play();

我从中得到的结果很奇怪:有时候我只得到一个轨道,视频轨道,但是有时候我也得到了音频轨道,所以总共有两个轨道。

问题是媒体也有字幕轨道,所以我必须有一种方法来获取所有三个轨道(在Windows上用vlc播放相同的确切媒体会显示所有三个轨道)。

我在做什么错?

编辑:我需要一种动态获取所有轨道的方法,媒体可能具有n个轨道,所以我不知道确切的数字。这只是一个测试,我知道有三条路。

谢谢

android libvlc
1个回答
0
投票

如果无法从媒体获取轨道,请使用VLC MediaPlayer对象,VLC媒体播放器提供了使用MediaPlayer对象获取音频轨道,视频轨道和字幕轨道的方法。

mMediaPlayer!!.setEventListener { 
            when (p0?.type) {
            MediaPlayer.Event.Opening-> {
                val audioTracks = mMediaPlayer!!.audioTracks
                val subtitleTracks = mMediaPlayer!!.spuTracks
                val videoTracks = mMediaPlayer!!.videoTracks
            }
        }

您可以遍历列表以获取单独的曲目。

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