MediaPlayer onTimedText(MediaPlayer mp, final TimedText text) 在 android 中每次都获取文本 null
MediaPlayer onTimedText(MediaPlayer mp, final TimedText text) getting text null every time in android
您好,我正在研究 MediaPlayer 我的代码描述如下:
private void captionOn(String fileName) {
if (fileName != null) {
try {
if (mediaPlayer != null && contentPlaying && mediaPlayer.isPlaying()) {
Log.d(TAG,"TEST getSubtitleFile(fileName) == "+getSubtitleFile(R.raw.abc));
mediaPlayer.addTimedTextSource(getSubtitleFile(R.raw.abc), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
textTrackIndex = findTrackIndexFor(
MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,
mediaPlayer.getTrackInfo());
Log.i("My Message", "textTrackIndex : " + textTrackIndex);
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
isCaptionOn = true;
} else {
Log.w("My Message", "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
} else {
Log.d("My Message", "media player Null");
}
} catch (Exception e) {
e.printStackTrace();
Log.d("My Message", "Exception adding timed Text");
}
} else {
Toast.makeText(mContext, "No Caption Available at the moment",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onTimedText(MediaPlayer mp, final TimedText text) {
Log.i("My Message", "inside onTimedText Listener");
Log.i("My Message", "inside onTimedText Listener text = "+text);
timedTextHandler.post(new Runnable() {
@Override
public void run() {
Log.i("My Message", "inside onTimedText Listener run************** = ");
if (null != text) {
Log.i("My Message", "timed Text:" + text.getText());
if (text.getText() != null) {
String mText = text.getText().trim();
timedTextTextView.setVisibility(View.VISIBLE);
timedTextTextView.setText(mText);
}
} else {
timedTextTextView.setVisibility(View.INVISIBLE);
}
}
});
}
getSubtitleFile() 方法成功打印文件路径。但在 onTimedText 中,我得到的文本为空。
我正在使用 videoview 并在其上设置 onPrepareListener()。在 onPrepared(MediaPlayer mediaPlayer)
里面
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
this.mediaPlayer = mediaPlayer;
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setWakeMode(mContext, PowerManager.PARTIAL_WAKE_LOCK);
isPrepared = true;
Log.d(TAG, "TEST OnPrepared");
//if(Constants.IS_DEBUGGING_ON) {
Log.d("", "OnPrepared");
// }
mMovieDuration = mediaPlayer.getDuration();
video.start();
if(isCaptionDownloaded){
captionOn(ccFileName);
}
}
任何人都可以建议我在这里做错了什么。
我认为问题出在您的 .srt 文件中。我解决了相同类型的问题。请看我的回答。
[MediaPlayer addTimedTextSource in android点击此处获取答案]
您好,我正在研究 MediaPlayer 我的代码描述如下:
private void captionOn(String fileName) {
if (fileName != null) {
try {
if (mediaPlayer != null && contentPlaying && mediaPlayer.isPlaying()) {
Log.d(TAG,"TEST getSubtitleFile(fileName) == "+getSubtitleFile(R.raw.abc));
mediaPlayer.addTimedTextSource(getSubtitleFile(R.raw.abc), MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
textTrackIndex = findTrackIndexFor(
MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,
mediaPlayer.getTrackInfo());
Log.i("My Message", "textTrackIndex : " + textTrackIndex);
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
isCaptionOn = true;
} else {
Log.w("My Message", "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
} else {
Log.d("My Message", "media player Null");
}
} catch (Exception e) {
e.printStackTrace();
Log.d("My Message", "Exception adding timed Text");
}
} else {
Toast.makeText(mContext, "No Caption Available at the moment",
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onTimedText(MediaPlayer mp, final TimedText text) {
Log.i("My Message", "inside onTimedText Listener");
Log.i("My Message", "inside onTimedText Listener text = "+text);
timedTextHandler.post(new Runnable() {
@Override
public void run() {
Log.i("My Message", "inside onTimedText Listener run************** = ");
if (null != text) {
Log.i("My Message", "timed Text:" + text.getText());
if (text.getText() != null) {
String mText = text.getText().trim();
timedTextTextView.setVisibility(View.VISIBLE);
timedTextTextView.setText(mText);
}
} else {
timedTextTextView.setVisibility(View.INVISIBLE);
}
}
});
}
getSubtitleFile() 方法成功打印文件路径。但在 onTimedText 中,我得到的文本为空。
我正在使用 videoview 并在其上设置 onPrepareListener()。在 onPrepared(MediaPlayer mediaPlayer)
里面 @Override
public void onPrepared(MediaPlayer mediaPlayer) {
this.mediaPlayer = mediaPlayer;
this.mediaPlayer.setOnBufferingUpdateListener(this);
this.mediaPlayer.setWakeMode(mContext, PowerManager.PARTIAL_WAKE_LOCK);
isPrepared = true;
Log.d(TAG, "TEST OnPrepared");
//if(Constants.IS_DEBUGGING_ON) {
Log.d("", "OnPrepared");
// }
mMovieDuration = mediaPlayer.getDuration();
video.start();
if(isCaptionDownloaded){
captionOn(ccFileName);
}
}
任何人都可以建议我在这里做错了什么。
我认为问题出在您的 .srt 文件中。我解决了相同类型的问题。请看我的回答。
[MediaPlayer addTimedTextSource in android点击此处获取答案]