ExoPlayer - 奇怪的 Arabic/Persian 字幕格式
ExoPlayer - Weird Arabic/Persian Subtitles Format
我正在尝试创建带字幕的视频播放器。一切都已设置并正常工作,除了一件事。我的阿拉伯语字幕显示不正确。他们用符号和东西看起来很奇怪..像这样:
这是我的带有字幕的 ExoPlayer 设置:
Uri srt = Uri.parse("http://download1651.mediafire.com/titdvyxje25g/j5wpodffdhn005r/Thor+3+.WEB+%28NoColored%29.srt");
Handler mainHandler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
player =
ExoPlayerFactory.newSimpleInstance(this, trackSelector);
DefaultBandwidthMeter bandwidthMeter2 = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "yourApplicationName"), bandwidthMeter2);
Format textFormat = Format.createTextSampleFormat(null, MimeTypes.APPLICATION_SUBRIP,
null, Format.NO_VALUE, Format.NO_VALUE, "ar", null, Format.OFFSET_SAMPLE_RELATIVE);
MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(getVideoUri()));
MediaSource textMediaSource = new SingleSampleMediaSource.Factory(dataSourceFactory)
.createMediaSource(srt, textFormat, C.TIME_UNSET);
MediaSource mediaSource = new MergingMediaSource(videoSource, textMediaSource);
player.prepare(mediaSource);
有什么解决办法吗?
该文件的编码是windows-1256
。你应该先把它改成Unicode,然后你才能正确看到它。
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("arabic sub.srt"), "windows-1256")
);
String line = null;
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("new.srt"), "UTF-8")
);
while((line = reader.readLine())!= null){
writer.write(line);
writer.write("\r\n");
}
writer.close();
我正在尝试创建带字幕的视频播放器。一切都已设置并正常工作,除了一件事。我的阿拉伯语字幕显示不正确。他们用符号和东西看起来很奇怪..像这样:
这是我的带有字幕的 ExoPlayer 设置:
Uri srt = Uri.parse("http://download1651.mediafire.com/titdvyxje25g/j5wpodffdhn005r/Thor+3+.WEB+%28NoColored%29.srt");
Handler mainHandler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory =
new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =
new DefaultTrackSelector(videoTrackSelectionFactory);
player =
ExoPlayerFactory.newSimpleInstance(this, trackSelector);
DefaultBandwidthMeter bandwidthMeter2 = new DefaultBandwidthMeter();
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "yourApplicationName"), bandwidthMeter2);
Format textFormat = Format.createTextSampleFormat(null, MimeTypes.APPLICATION_SUBRIP,
null, Format.NO_VALUE, Format.NO_VALUE, "ar", null, Format.OFFSET_SAMPLE_RELATIVE);
MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(getVideoUri()));
MediaSource textMediaSource = new SingleSampleMediaSource.Factory(dataSourceFactory)
.createMediaSource(srt, textFormat, C.TIME_UNSET);
MediaSource mediaSource = new MergingMediaSource(videoSource, textMediaSource);
player.prepare(mediaSource);
有什么解决办法吗?
该文件的编码是windows-1256
。你应该先把它改成Unicode,然后你才能正确看到它。
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("arabic sub.srt"), "windows-1256")
);
String line = null;
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("new.srt"), "UTF-8")
);
while((line = reader.readLine())!= null){
writer.write(line);
writer.write("\r\n");
}
writer.close();