Android VLC 加载ass字幕乱码问题
前言
VLC是一款优秀的开源视频播放软件,它的大名早就如雷贯耳,最近终于有机会下载安装试试看了。非常强大的功能是可以加载ass格式的字幕,对比一款文件管理软件仅仅是加载同名称的srt字幕文件,这个功能可以说是很强大了。然而使用的时候却出现了问题,中文字幕无法显示,全部都是“口口口”,下面一行英文倒是出来了,花费了一整天的时间,终于搜出来了解决方案。
设备环境
我的安卓手机是HTC E9 pw,安卓系统是5.0.2,VLC下载的是最新版本3.2.12.
我的电脑是Windows10,但是用linux系统应该adb更好装。
乱码原因
之前搜到的结果有人说是编码格式错乱,但实际上是字体缺失,这个问题已经在两年前修复了,参照这个博客进行修改就可以。
VLC使用的字体是/system/fonts/DroidSans-Bold.ttf,这个里边只是英文,所以肯定中文乱码了呀。
解决办法
按照上面的资料,VLC问题修复后,加入了一个新的字体/system/fonts/NotoSansCJK-Regular.ttc.也就是VLC会先去查找这个ttc文件,如果找不到,那不好意思,还是加载那个没有中文的字体,显示乱码也不管了。所以只要下载这个字体就可以了。
1.下载字体
点击下载
2.安装安卓SDK
这仅仅是为了使用adb工具来给手机里传输字体文件,以及修改字体文件权限。具体方法我就不写了,教程很多。
3.ROOT手机
这仅仅是为了使用adb工具来给手机里传输字体文件,以及修改字体文件权限。我这里是参考别人的教程,下载root工具KingRoot完成的。
4.拷贝字体文件
1.安卓的/system文件夹是不允许直接拷贝文件进去的,所以先拷贝字体文件到/sdcard/Download文件下
adb.exe push E:\StudyProject\AndroidProject\NotoSansCJK-Regular.ttc /sdcard/Download
2.把字幕文件拷贝到/system文件夹下,需要root权限
adb.exe shell
su
cp /sdcard/Download/NotoSansCJK-Regular.ttc /system/fonts
3.更改字体权限
这时我们查看字体文件权限
#在adb shell下执行
cd /system/fonts
ll | grep ttc #查看新字体权限
发现新字体权限为"-rw-r-----"而其他字体的权限为"-rw-r--r--",也就是说除了root及其同组用户可以使用这个字体,其他用户都不能用,这显然需要更改。
这里我改了半天莫名奇妙改好了。首先重新挂载解决/system不允许修改的属性,然后使用"chmod 644"指令修改权限。
#在adb shell下执行
mount | grep system #查看system是否允许读写
如果显示/dev/block/platform/mtk-msdc.0/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0,注意这里的”rw"是允许读写,否则出现"ro"表示只读,要remount,这个指令我没有使用,这里就不写了。
#在adb shell下执行
chmod 644 /system/fonts/NotoSansCJK-Regular.ttc#修改添加其他人可读
这是再查看字体文件的权限,如果和其它字体文件一致了就可以了。
#在adb shell下执行
cd /system/fonts
ll | grep ttc #查看新字体权限
成果
字幕这样就可以正常加载了
注意事项
- adb shell里的chomd指令只允许以数字的方式修改权限,如果写成chomd o+r xxx 会提示bad mod.
- 对于时间宝贵的人来说费这么大劲很不值得。时间宝贵的人就不要搞了,投入到更有价值的事情上吧。
- 命令行是个神奇的东西,一行指令能毁天灭地,请慎重使用root权限。
资料引用
问题提出:https://code.videolan.org/videolan/vlc-android/-/issues/216
解决方案:https://craftwarblog.blogspot.com/2018/05/android-vlc-display-chinese-subtitle.html
修复源码:https://git.videolan.org/gitweb.cgi/vlc.git/?p=vlc.git;a=commitdiff;h=8a15910d9f8e7d860f29d0e9803c756970d8cf74;hp=4b898d321d77436204b573d066c61261d037f275
Android VLC 加载ass字幕乱码问题相关推荐
- 浅析Android字体加载原理
浅析Android字体加载原理 前言 之前在处理系统字体问题的时候,可借鉴的资料很少,遇到了很多坑,不得不了解Android字体加载原理,现抽空写一篇总结,来加深自己对这块的理解. 内容 概述 And ...
- android edittext html 图片,Android EditText加载HTML内容(内容包含网络图片) -电脑资料...
android中的Html.fromHtml可以用来加载HTML的内容,fromHtml有三个参数需要设置,第一个是要显示的html内容,第二个就是要说的重点,ImageGetter,用来处理图片加载 ...
- android 动态 dex,Android 动态加载dex
首先如果仅仅是因为64K method的问题可以直接看这里DexGuard.Proguard.Multi-dex给出的解决方案. 本文主要讨论从编译层面,dex动态加载器选择层面以及安全层面讨论dex ...
- Android动态加载技术初探
一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...
- Android动态加载黑科技 动态创建Activity模式
基本信息 Author:kaedea GitHub:android-dynamical-loading 代理Activity模式的限制 还记得我们在代理Activity模式里谈到启动插件APK里的Ac ...
- Android动态加载进阶 代理Activity模式
基本信息 作者:kaedea 项目:android-dynamical-loading 技术背景 简单模式中,使用ClassLoader加载外部的Dex或Apk文件,可以加载一些本地APP不存在的类, ...
- Android动态加载技术
基本信息 Author:kaedea GitHub:android-dynamical-loading 我们很早开始就在Android项目中采用了动态加载技术,主要目的是为了达到让用户不用重新安装AP ...
- android 双 webview,Android webview加载页面
释放双眼,带上耳机,听听看~! Android webview加载页面 private WebView webView; public void init() { webView = (WebView ...
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类...
前言 近期做换肤功能,由于换肤程度较高,受限于平台本身,实现起来较复杂,暂时搁置了该功能,但也积累了一些经验,将分两篇文章来写这部分的内容,欢迎交流! 关键字:Android动态加载 声明 欢迎转载, ...
- android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...
最新文章
- Swift 中使用 SQLite——批量更新(事务处理)
- 学习AI可能不需要那么多数学知识:20小时进阶计划
- 【其他】配置JIRA
- weblogic服务器启动报错
- python3编码声明_python3编码问题汇总
- 作家百态之二:山南海北
- 如何从零开始设计一颗芯片?
- 补习系列(13)-springboot redis 与发布订阅
- JSON.stringify()实现原理
- 20201219:力扣219周周赛题解
- python 文件名以数字开头_python-如何使XML标记以数字开头?
- 【DIOCP开源项目】实际应用案例
- 新手机出现陌生女人照片,客服:大数据时代可能性有很多
- openCV5-getTickCount
- 高速公路坐标高程计算软件3.3版本发布
- 华为模拟器linux,华为ENSP模拟器 官方安装版
- c语言头文件下载大全,C语言头文件大全
- 12306验证码分割
- linux用gzip文件,Linux中的Gzip命令
- python在tk界面播放本地视频_tkinter做一个本地视频播放器(2)——弹幕