解决Android版vlc中文乱码问题

FQ到google play store安装了vlc以后播放视频中文显示方框,开始以为编码问题,将字幕文件转换成utf-8以后问题依旧。

android版vlc有个开发者模式,可以查看运行日志:

07-02 16:13:30.658 D/VLC     (19362): freetype spu text: Using /system/fonts/DroidSans-Bold.ttf as font from file /system/fonts/DroidSans-Bold.ttf
07-02 16:13:30.658 D/VLC     (19362): freetype spu text: Using /system/fonts/DroidSansMono.ttf as mono-font from file /system/fonts/DroidSansMono.ttf
07-02 16:13:30.659 D/VLC     (19362): freetype spu text: using fontsize: 2

通过日志,可以看到,在加载字幕的时候会使用: /system/fonts/DroidSans-Bold.ttf  /system/fonts/DroidSansMono.ttf  两个字体文件。但是这两个字体文件没有对中文的支持。

So,需要下载中文字体文件对这两个文件进行替换,当然正确的做法应该是下载vlc源码修改后重新编译。。。。。。

字体下载链接:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

把SourceHanSansSC-Normal.otf重命名为DroidSansMono.ttf,把SourceHanSansSC-Bold.otf重命名为DroidSans-Bold.ttf,把两个文件用es文件管理器什么的复制到/system/fonts,覆盖掉原来的文件,修改权限为0644。问题解决。


可以参考以下步骤: 1. 首先,在Android Studio中打开你的项目,并确保你使用的是最新的本。 2. 在 build.gradle(module) 文件的 dependencies 部分,添加以下代码: ```gradle implementation 'de.mrmaffen:vlc-android-sdk:3.2.0' ``` 这将添加 VLCAndroid SDK 到你的应用程序中。 3. 在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 这些权限允许你的应用程序访问互联网和外部存储器。 4. 在你的布局文件中添加一个 SurfaceView,用于播放视频: ```xml <SurfaceView android:id="@+id/surface_view" android:layout_width="match_parent" android:layout_height="wrap_content"/> ``` 5. 在你的活动中,添加以下代码: ```java import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.SurfaceView; import org.videolan.libvlc.MediaPlayer; import org.videolan.libvlc.Media; import org.videolan.libvlc.LibVLC; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private LibVLC libVLC; private MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SurfaceView surfaceView = findViewById(R.id.surface_view); ArrayList<String> options = new ArrayList<>(); options.add("--aout=opensles"); options.add("--audio-time-stretch"); options.add("-vvv"); libVLC = new LibVLC(this, options); mediaPlayer = new MediaPlayer(libVLC); mediaPlayer.attachViews(surfaceView, null, false, false); Media media = new Media(libVLC, Uri.parse("your_video_file_path")); mediaPlayer.setMedia(media); media.release(); mediaPlayer.play(); } @Override protected void onDestroy() { super.onDestroy(); mediaPlayer.stop(); mediaPlayer.release(); libVLC.release(); } } ``` 在这里,我们创建一个 LibVLC 实例,然后将其附加到一个 MediaPlayer 实例中。然后,我们创建一个 Media 实例,并将其附加到 MediaPlayer 中,最后播放视频。 希望这个示例可以帮助你集成最新的 VLC SDK 到你的 Android 应用程序中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值