繁体   English   中英

将addSubtitleSource与videoview一起使用

[英]use addSubtitleSource with videoview

我正在尝试将字幕添加到videoview中,getSubtitleSource的方法如下:

private InputStream getSubtitleSource(String filepath) {
        InputStream ins = null;
        String ccFileName = filepath.substring(0,filepath.lastIndexOf('.'));
        File file = new File(ccFileName);
        if (file.exists() == false)
        {
            Log.e(TAG,"no close caption file " + ccFileName);
            return null;
        }
        FileInputStream fins = null;
        try {
            fins = new FileInputStream(file);
        }catch (Exception e) {
            Log.e(TAG,"exception " + e);
        }
        ins = (InputStream)fins;
        return ins;
    }

这里是我如何调用该方法并与其一起使用srt文件的方法:

videoView.seekTo(position);
String srt = "http://shasha/share/2018/09/07/Lucha_Mexico_.srt";
videoView.addSubtitleSource(getSubtitleSource(srt),MediaFormat.createSubtitleFormat("text/srt",Locale.ENGLISH.getLanguage())); 
videoView.start();

addSubtitleSource有问题,createSubtitleFormat表示:

调用需要API级别19(当前最小值为16):android.widget.VideoView#addSubtitleSource

所以我只是用sdk版本将其包围,如下所示:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
videoView.seekTo(position);
String srt = "http://shasha/share/2018/09/07/Lucha_Mexico_.srt";
videoView.addSubtitleSource(getSubtitleSource(srt),MediaFormat.createSubtitleFormat("text/srt",Locale.ENGLISH.getLanguage()));  
videoView.start();
 }

但是当我播放视频时,没有字幕出现,所以怎么了

使用Build.VERSION进行检查只会使您的应用程序避免崩溃。因此,如果您使用的API级别低于api级别19,则该应用程序将不会崩溃,但getSubTitleSource将无法正常工作。

只需使用api级别19在app.gradle中编辑您的minSdkVersion。

  minSdkVersion 19

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM