【问题标题】:ExoPlayer not loading subtitles from .srt fileExoPlayer 未从 .srt 文件加载字幕
【发布时间】:2021-08-23 04:20:26
【问题描述】:

所以我试图在 exoplayer 中显示我的 .srt 文件中的字幕,但它不起作用。 我需要使用单独的 SubtitleView 来显示我的字幕吗? PlayerView中的subtitleView是不是不够用? 顺便说一句,我使用 PlayerView。

我使用的exoplayer版本是2.14.0。

addTextOutput 方法。

simpleExoPlayer.addTextOutput(cues -> {
                playerView.getSubtitleView().setCues(cues);
                playerView.getSubtitleView().setVisibility(View.VISIBLE);
                playerView.getSubtitleView().onCues(cues);
                assert cues.get(0).text != null;
                Log.d("subtitles", cues.get(0).text.toString());
            });

我也尝试实现TextOutput,但这也没有用。

我的 sample.srt 文件的内容:

1
00:00:00,000 --> 00:00:01,500
For www.forom.com

2
00:00:01,500 --> 00:00:02,500
<i>Tonight's the night.</i>

3
00:00:03,000 --> 00:00:15,000
<i>And it's going to happen
again and again --</i>

我用来加载字幕的功能:

public void buildMediaSourceV3(Uri uri){
        String subtitlesUri = sharedPreferencesSubtitles.getString(videoName.getText().toString(), "");

        DataSource.Factory factory = new DefaultDataSourceFactory(VideoPlayer.this, getPackageName(), new DefaultBandwidthMeter());
        MediaItem mediaItem = MediaItem.fromUri(uri);
        MediaSource videoSource = new ProgressiveMediaSource.Factory(factory).createMediaSource(mediaItem);
        if(subtitlesUri.equals(""))
        {
            simpleExoPlayer.addMediaSource(videoSource);
        }
        else
        {
                MediaItem.Subtitle subtitle = new  MediaItem.Subtitle(Uri.parse(subtitlesUri), MimeTypes.APPLICATION_SUBRIP, "en");
                MediaSource textMediaSource = new SingleSampleMediaSource.Factory(factory).createMediaSource(subtitle, C.TIME_UNSET);
                textMediaSource.getMediaItem().mediaMetadata.subtitle.toString();
                MergingMediaSource mergingMediaSource = new MergingMediaSource(videoSource, textMediaSource);
                simpleExoPlayer.addMediaSource(mergingMediaSource);
        }
    }

【问题讨论】:

    标签: android exoplayer exoplayer2.x video-subtitles


    【解决方案1】:

    我知道你已经实现了a workaround

    我也遇到了同样的问题,找到了解决办法:

    trackSelector.setPreferredTextLanguage
    

    这对我有帮助。完整上下文:

    val trackSelector = DefaultTrackSelector(context)
    trackSelector.setParameters(trackSelector.buildUponParameters().setPreferredTextLanguage("en"))
    

    更新: 我错了。该解决方案仅显示视频嵌入字幕,而不是旁加载字幕。

    这对我有用:

    val mediaItemBuilder = MediaItem.Builder()
                    .setUri(uri))
    
    videoCaption?.vtt?.let {
        val uriSubtitle = Uri.parse(it)
        val mediaItemSubtitle = MediaItem.Subtitle(uriSubtitle,
                                MimeTypes.TEXT_VTT,
                                "en",
                                C.SELECTION_FLAG_DEFAULT)
                
            
        mediaItemBuilder.setSubtitles(mutableListOf(mediaItemSubtitle))
    }
            
    val mediaItem = mediaItemBuilder.build()
    val mediaSource = DefaultMediaSourceFactory(dataSourceFactory, extractoryFactory).createMediaSource(mediaItem)
    

    【讨论】:

      猜你喜欢
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多