com.google.android.exoplayer2.text.subtitlexception
我通过简单地编写一个文本文件并使用com.google.android.exoplayer2.text.subtitlexception,android,android-videoview,exoplayer,exoplayer2.x,android-video-player,Android,Android Videoview,Exoplayer,Exoplayer2.x,Android Video Player,我通过简单地编写一个文本文件并使用.srt扩展名保存它来创建字幕。我创建的所有字幕文件都运行良好。(我刚刚用MxPlayer检查过) 现在我正在构建一个视频播放器,它需要显示我创建的字幕 最初,我试图从web加载字幕,只是为了准备代码库。它成功了 val uri = Uri.parse("https://bitdash-a.akamaihd.net/content/sintel/hls/subtitles_en.vtt") val subtitleFormat: Format
.srt
扩展名保存它来创建字幕。我创建的所有字幕文件都运行良好。(我刚刚用MxPlayer检查过)
现在我正在构建一个视频播放器,它需要显示我创建的字幕
最初,我试图从web加载字幕,只是为了准备代码库。它成功了
val uri = Uri.parse("https://bitdash-a.akamaihd.net/content/sintel/hls/subtitles_en.vtt")
val subtitleFormat: Format = Format.createTextSampleFormat(
null, // An identifier for the track. May be null.
MimeTypes.TEXT_VTT, // The mime type. Must be set correctly.
Format.NO_VALUE, // Selection flags for the track.
"en"
)
var mediaDataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, null))
var subtitleSource = SingleSampleMediaSource(uri, mediaDataSourceFactory,
subtitleFormat,
C.TIME_UNSET)
...
...
var videoSource: MediaSource = buildMediaSource(video_uri!!)
var mediaSource: MediaSource = MergingMediaSource(videoSource, subtitleSource)
现在我要做的就是从位于的本地文件夹加载字幕文件
/storage/emulated/0/Android/data/com.company.appname/files/Subtitle/shortmovie.2020.720p.x264.mp4.en.srt
我知道web文件和本地文件不同。但我不知道这是否造成了问题*
要加载,我遵循下面的代码段
fun getSubtitleFilePath(context: Context, subtitleFileName: String?): File {
val path = context.getExternalFilesDir(null)
return File(path, "$appFolderName/${subtitleFileName}.srt")
}
val subtitleFilePath = getSubtitleFilePath(this, "shortmovie.2020.720p.x264.mp4.en")
val uri = Uri.parse(subtitleFilePath.toURI().toString())
仅此而已,我刚刚用本地字幕文件替换了uri
主要问题
当我尝试加载字幕时,播放机没有播放视频。我犯了个错误
Playback error.
com.google.android.exoplayer2.ExoPlaybackException: com.google.android.exoplayer2.text.SubtitleDecoderException: com.google.android.exoplayer2.ParserException: Expected WEBVTT. Got 1
Caused by:
com.google.android.exoplayer2.text.SubtitleDecoderException: com.google.android.exoplayer2.ParserException: Expected WEBVTT. Got 1
我不知道这个错误是怎么回事。我只是浏览了一下,没有找到解决办法
如何解决这个问题?因为,没有人回答我的问题,我找到了自己的答案
- 首先是
和。vtt
略有不同。。srt
在
中,第一行是文本.vtt
WEBVTT
在
中没有这样的东西.srt
- 其次,非常重要的是
对于subtitleFormat
它应该是.srt
,对于MimeTypes.APPLICATION\u SUBRIP
它应该是.VTT
MimeTypes.TEXT\u VTT
- 如果将
重命名为.srt
,并手动添加第一行.vtt
,将出现一些解析异常。所以,最好检查webvtt文件是否正确WEBVTT
现在一切都很顺利。因为,没有人回答我的问题,我自己也找到了答案
- 首先是
和。vtt
略有不同。。srt
在
中,第一行是文本.vtt
WEBVTT
在
中没有这样的东西.srt
- 其次,非常重要的是
对于subtitleFormat
它应该是.srt
,对于MimeTypes.APPLICATION\u SUBRIP
它应该是.VTT
MimeTypes.TEXT\u VTT
- 如果将
重命名为.srt
,并手动添加第一行.vtt
,将出现一些解析异常。所以,最好检查webvtt文件是否正确WEBVTT
现在一切正常。谢谢。我将本地艺术文件的mime类型更改为MimeTypes.APPLICATION\u SUBRIP。谢谢你。我将本地艺术文件的mime类型更改为MimeTypes.APPLICATION\u SUBRIP。它起作用了