当前位置: 首页 > 知识库问答 >
问题:

ExoPlayer-奇怪的阿拉伯语/波斯语字幕格式

杜辉
2023-03-14

我正在尝试创建一个带有字幕的视频播放器。除了一件事,一切都设置好了,工作正常。我的阿拉伯语字幕显示不正确。他们用符号之类的东西看起来很奇怪。。比如:

以下是我的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);

有什么解决办法吗?

共有1个答案

东郭兴学
2023-03-14

文件的编码为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();
 类似资料:
  • 在基于web的应用程序中,我们希望更改fa_IR区域设置中的数字格式。(波斯语和阿拉伯语数字的Unicode不同于拉丁语数字)。java不支持此特性(对于基于swing的应用程序,可以使用形状数字http://docs.oracle.com/javase/tutorial/i18n/text/shapeddigits.html) 无论如何,这个格式化程序将用unicode波斯语数字替换ASCII数

  • 问题内容: 像这样的一些代码块: 此代码的输出是: 如果我删除了encode(’utf-8’)输出更改,如下所示: 这种输出语言是波斯语(像阿拉伯语),我想知道为什么python3中的字符串类没有任何解码方法?您对此问题有解决方案吗? 谢谢 问题答案: 好的,我找到了解决方案,它的运行就像一个魅力 更新:ZSH脚本环境中的此问题,我使用bash,一切都找到了。

  • 我创建了一个javafx应用程序,使用javafx scene builder来设计它的界面,当我试图显示一些波斯语或阿拉伯语字符时scene builder以无序模式显示它,例如,当我将一个标签的文本改为一个波斯语或阿拉伯语单词“”它正在无序模式下(从左到右)写作“”(字符之间没有任何空格)。我想javafx场景构建器可能不支持波斯语或阿拉伯语,但我知道应该有一些方法,所以请帮助我怎么做。 注意

  • 如何在静态编程语言中将波斯语/阿拉伯语数字转换为英语?我在java中看到过类似的问题,但它不符合我的要求。当我在使用波斯本地化数字的设备中获得日期时,波斯和服务器不能将此字符串转换为日期时间。这里是我在波斯本地化设备中收到的日期: "۲۰۲۰/۰۸/۲۱" 这些是波斯/阿拉伯数字 (۰ - 我需要在科特林玩一玩来表演这个。

  • Adobe 亚洲语言书写器 借助 Adobe 亚洲语言书写器,您可以使用中东和南亚语言创建内容。您可以键入或混合键入阿拉伯语、希伯来语、英语和其他语言。 您可以在“段落”面板菜单(窗口 > 段落 > 面板菜单)中的可用书写器之间进行选择。例如,您可以使用中东和南亚语言单行书写器或中东和南亚语言逐行书写器。 有关 Illustrator 中支持的其他亚洲语言的更多信息,请参阅适用于亚洲语言文字的书写

  • 启用中东语言功能 若要在 Photoshop 界面中显示中东文字选项,请执行以下操作: 选取“编辑”>“首选项”>“文字”(Windows) 或“Photoshop”>“首选项”>“文字”(Mac OS)。 在“选取文本引擎选项”部分中,选取“中东”。 单击“确定”,并重新启动 Photoshop。 选取“文字”>“语言选项”>“中东语言功能”。 文本方向 要创建阿拉伯语和希伯来语内容,您可以将默