当前位置: 首页 > 知识库问答 >
问题:

Android-ExoPlayer2字幕

尹小云
2023-03-14

如何在ExoPlayer2上设置字幕?我试过这个媒体来源:

    SingleSampleMediaSource singleSampleSource = new SingleSampleMediaSource(Uri.fromFile(new File("/sdcard/Download/a.vtt")), mediaDataSourceFactory,
        Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, null, Format.NO_VALUE, C.SELECTION_FLAG_DEFAULT, "se", null, 0),
        50000 //in us
         );
return new MergingMediaSource(new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(),
        mainHandler, eventLogger), singleSampleSource);

但我犯了一个错误:

 Unexpected exception loading stream
                                                         java.lang.NullPointerException: Attempt to get length of null array
                                                             at com.google.android.exoplayer2.source.SingleSampleMediaPeriod$SourceLoadable.load(SingleSampleMediaPeriod.java:272)
                                                             at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:295)
                                                             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                             at java.lang.Thread.run(Thread.java:761)

共有1个答案

范甫
2023-03-14
Format textFormat = Format.createTextSampleFormat(null, MimeTypes.APPLICATION_SUBRIP,
                            null, Format.NO_VALUE, Format.NO_VALUE, "ar", null);

MediaSource subtitleSource = new SingleSampleMediaSource("link srt url",
                                    mediaDataSourceFactory, textFormat, C.TIME_UNSET);

MergingMediaSource mergedSource = new MergingMediaSource(mediaSource, subtitleSource);

更多

 类似资料:
  • 我在用 通用域名格式。亚马逊。android:exoplayer用户界面:r2。5.4 在我的项目中,我刚刚将IDE升级到Android Studio 3.3.1。在我的中,我有下面的编译代码 在尝试构建时,我得到了这个错误: 任务:app:mergextdexdebug失败AGPBI:{“种类”:“错误”,“文本”:“默认接口方法仅支持从Android N开始(--min api 24):voi

  • 我开始使用ExoPlayer来传输一些音频。一切都很好,直到我遇到一个URL,其中有一个“301永久移动”重定向。默认情况下,ExoPlayer2不会处理该问题。 我已经看过这个帖子了:https://github.com/google/ExoPlayer/issues/423 在那里,他们说要向HttpDataSource或UriDataSource添加新的“lowCrossDomainReDi

  • 但是保持黑色,我会得到以下错误: 我做错了什么?

  • 问题内容: 我打算在微调器中将文本字体更改为arialbold。以下是我的代码:- 问题答案: 类: 版面: my_spinner_style.xml TTF文件

  • 项目拷打,主要讲清楚你在开发中的设计思路和贡献。(聊得挺长时间) C++基础知识 智能指针实现,shared_ptr、unique_ptr、weak_ptr。 你自己实现shared_ptr 有哪些关键的步骤。 new、delete、malloc、free区别。(注意要答到new的具体实现【会执行对象的构造函数】,brk和mmap【malloc】,我给忘记了) 多态,虚函具体实现。场景:A和B是两

  • 问题内容: 我有一个名为的字符串,其形式像这样 。 我想使用:分隔符。 这样一来,单词将被拆分成自己的字符串,并将成为另一个字符串。 然后我只想使用2种不同的字符串来显示该字符串。 解决这个问题的最佳方法是什么? 问题答案: 你可能要删除第二个字符串的空格: 如果要用特殊字符(例如dot(。))分割字符串,则应在点之前使用转义字符\ 例: 还有其他方法可以做到这一点。例如,你可以使用类(来自):