Comments (14)
@SaekiRaku Updated
from vscode-rainbow-fart.
@JavaCS3 感谢!不过 60MB 对于一个插件来说确实不算小了。无论是整合进插件本身,还是启动后下载,个人感觉用户体验都没有很大的提升。因为在执行播放动作前,都需要用户进行操作或等待,并且为了稳定的网络访问,可能还需要镜像服务器。
BTW,我还发现了一个有趣的插件:https://github.com/auchenberg/vscode-browser-preview ,借助 Chrome Headless(本机仍需安装 Chrome,不过我感觉这几乎是大部分程序员的标配)在 VSCode 内嵌入一个全功能浏览器,这样也无需用户手动启动浏览器了,并且插件体积也比较容易接受(vscode-browser-preview 10MB)
from vscode-rainbow-fart.
@SaekiRaku 其实不需要ffplay打包到插件里。第一次启动插件的时候下载一次即可,只有第一次使用的时候体验会差一点。这个体验跟vscode一些language server插件一样都是运行时下载依赖包。我觉得可以接受。另外由于目前只需要播放音频,启动一个Chrome Headless感觉没啥必要额
from vscode-rainbow-fart.
@JavaCS3 Chrome Headless 的优势是不需要所有人都下载前置依赖,劣势是内存占用70MB,远大于 ffplay 的 6MB 内存。我觉得这里的问题是在于权衡用户是更能忍受 60MB 前置依赖的下载时间,还是更能忍受 70MB 的内存占用。
from vscode-rainbow-fart.
@JavaCS3 不知道还有没有更小一些的工具,ffplay 还内置了GUI/绘图等操作,而且还有一堆不太需要的解码器。实际情况下,我觉得只需要支持一小部分的音频格式就行了。
我觉得用 Golang 处理这件事不错,编写简单、容易维护还跨平台,单纯只解码播放MP3也许可以做到足够小巧。目前的一些简单的检索结果:
from vscode-rainbow-fart.
@SaekiRaku 如果你觉得目前的ffplay太大,可以在后续的版本自己重新编译去掉不必要的依赖。oto在不同的平台需要安装不同的依赖库。这种跟底层硬件打交道的东西必须是平台相关的,跟使用的语言无关,即使的语言本身是跨平台的。就像同样一个绘图指令在不同平台实现都是不一样的,需要分别编译,这个坑是绕不过去的。而且ffmpeg是个相对成熟的工具。
from vscode-rainbow-fart.
@JavaCS3 这个我理解,不过我不太了解 ffplay 的源码实现,不知道其剔除依赖的工作量有多大。我想的是将平台相关的播放部分和音频解码剥离开,播放部分单独找个小型库,解码部分单独找库,由 Golang 串联起来进行编译,这样可以尽可能的小一些,实现也不复杂,还有一部分自行定制的能力和空间。
from vscode-rainbow-fart.
为什么不让用户提前下好 ffplay,然后在插件配置中指定可执行文件的路径呢?根本不需要把这么大一个依赖和扩展一起安装吧。
Linux、macOS 都有包管理器可以用,还有国内镜像。Windows 有点麻烦,官网下载速度太慢了,60MB 在我这里得下一天。
from vscode-rainbow-fart.
@JavaCS3 感谢!不过 60MB 对于一个插件来说确实不算小了。无论是整合进插件本身,还是启动后下载,个人感觉用户体验都没有很大的提升。因为在执行播放动作前,都需要用户进行操作或等待,并且为了稳定的网络访问,可能还需要镜像服务器。
BTW,我还发现了一个有趣的插件:https://github.com/auchenberg/vscode-browser-preview ,借助 Chrome Headless(本机仍需安装 Chrome,不过我感觉这几乎是大部分程序员的标配)在 VSCode 内嵌入一个全功能浏览器,这样也无需用户手动启动浏览器了,并且插件体积也比较容易接受(vscode-browser-preview 10MB)
sdl2好像也可以播放音频吧?而且比较小?
from vscode-rainbow-fart.
我觉得最好是像其他基于LSP的VSCode插件那样,用一个原生语言比如C++,Rust写一个服务器,插件和它通信控制它播放声音。插件在安装的时候下载预编译的可执行文件,启动的时候启动它作为一个后台进程。
from vscode-rainbow-fart.
可以让用户自己设定播放音频的命令,然后在使用说明中提供一些解决方案?
from vscode-rainbow-fart.
绕过浏览器限制播放音频处理的怎么样了?
from vscode-rainbow-fart.
@muyichenfeng 就之前的讨论来看,个人目前比较倾向于 @ouuan 的方式,默认仍然通过浏览器进行播放(或 Chrome Headless),由不介意等待依赖下载和安装的用户自行配置希望使用的音频播放工具。
from vscode-rainbow-fart.
@muyichenfeng 就之前的讨论来看,个人目前比较倾向于 @ouuan 的方式,默认仍然通过浏览器进行播放(或 Chrome Headless),由不介意等待依赖下载和安装的用户自行配置希望使用的音频播放工具。
https://github.com/jadepeng/mp3player
这里用golang写了个demo,启动一个websocket服务器,可以接收{"command":"play","arg":"DIRECTORY\\built-in-voice-chinese\\await_01.mp3"}
播放mp3
rainbow-fart的配置里,可以增加播放器配置(使用浏览器、使用播放服务器),以及配置播放服务器地址
如果使用播放服务器播放,播放的时候,通过ws发送一条播放命令即可
from vscode-rainbow-fart.
Related Issues (20)
- 求东京热语音包 HOT 1
- [Feature] 配合swimming插件简直完美,有没有可能出一个于谦语音包
- [Feature] 确定是安慰人? HOT 1
- [Feature] 求马保国语音包 HOT 3
- [Feature] Could keywords using regex? | 关键词可否考虑加入正则表达式? HOT 1
- [Feature] 希望支持自定义时间播放特定语音 HOT 1
- [BUG] Can't work on remote SSH
- [Feature] 求 一个小团团的 语音包
- [Question] Trying to get new skins for model
- [Question] How can I contribute to English speaking for this project? HOT 1
- [语音包] 李云龙的语音包 HOT 2
- [Question] 中科天齐Wukong(悟空)声称 rainbow fart 具有漏洞,请问这会影响用户吗? HOT 1
- 求山泥若炫狗电棍语音包
- [BUG] Mac vscode cannot find resource
- [语音包]李云龙语音包
- 感谢小姐姐的插件,很好用... 就是 突然那么一下子吓得忘记想写啥了... HOT 2
- [Question] 请问idea应该怎样导入语言包 HOT 2
- 关于语音包独立仓库管理和使用CC协议的建议
- [Question] 导入后一直转圈圈 HOT 1
- pycharm里面下载的插件能改语音包吗,怎么改呢
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vscode-rainbow-fart.