我是Android编程的新手,但我仍然不了解某些部分。
我正在尝试将您使用的每个视频文件与其字幕文件相关联,以便在视频开始播放时可以自动加载字幕。
有.vtt
类型的字幕文件和一些视频。
所以我的问题是,如果我有其他视频,如何将合适的字幕上传到特定视频。
目前,我已经编写了代码,但似乎没有用。 我想将每个字幕文件都与其视频关联。
如何为其设置自动加载字幕,以便在加载视频command.mp4
时出现字幕文件subs2.tvv
,如果出现Windows10.mp4
-subs.tvv和make。
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vv = (VideoView) findViewById(R.id.video_view);
}
// Use intent to start system app that allow selection of video file
void playVideo(View view) {
Intent i = new Intent();
i.setType("video/mp4");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(i, "Select Video"), PICK_VIDEO_REQUEST);
}
// Use intent to start system settings on Captioning
void capSettings(View view) {
startActivityForResult(new Intent(Settings.ACTION_CAPTIONING_SETTINGS), 113);
}
@Override
protected void onActivityResult ( int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_VIDEO_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri uri = data.getData();
//videoLoaded = true;
mc = new MediaController(this);
vv.setMediaController(mc);
vv.setVideoURI(uri);
vv.start();
returnCursor =
getContentResolver().query(uri, null, null, null, null);
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
returnCursor.moveToFirst();
videoDurationText = (TextView) findViewById(R.id.videoDurationText);
videoDurationText.setText("Video name: " + "\"" + returnCursor.getString(nameIndex) + "\" ");
}
}
//при нажатии кнопки вызывается этот метод по onClick
void loadCaptions(View view) {
if (returnCursor.getString(nameIndex)=="command.mp4") {
vv.addSubtitleSource(getResources().openRawResource(R.raw.subs2), MediaFormat.createSubtitleFormat(
"text/vtt", Locale.ENGLISH.getLanguage()));
}
if( returnCursor.getString(nameIndex)=="Windows10.mp4")
{
vv.addSubtitleSource(getResources().openRawResource(R.raw.subs), MediaFormat.createSubtitleFormat(
"text/vtt", Locale.ENGLISH.getLanguage()));
}
}