Skip to content

[语音播放实现设计讨论] 建议使用ffplay在后台启动子进程播放声音从而绕过浏览器限制 #34

Open
@JavaCS3

Description

用ffplay可以做跨平台音乐播放 ffplay -nodisp -autoexit docs/assets/showoff-1.mp4。可以在插件active的时候把预先静态编译好的ffplay下下来。目前在NPM上面只看到一个这个https://www.npmjs.com/package/ffbinaries 不过这个会把ff全家桶全下下来。目前来看只需要ffplay就可以了,可以参考https://github.com/eugeneware/ffmpeg-static 用Github Action把各个平台的ffplay静态编译出来。vscode的tabnine.tabnine-vscodeAI代码补全就是这么干的,把预编译好的binary下下来直接执行。

经过调查发现已经有现成的FFmpeg各个平台静态编译版本,可以直接下载:https://ffmpeg.zeranoe.com/builds/
不过静态编译的ffplay大约有60MB,进程启动速度会比动态编译的慢3%

目前调研发现vscode播放音乐的方案大致有以下几种:

  1. 调用命令行工具(afplay, mplayer, aplay...):缺点是不同平台支持的命令行工具不太一样
  2. 替换vscode的ffmpeg的动态链接库:nondanee.vsc-netease-music:缺点是每次升级vscode都需要手动修改动态链接库
  3. 调用其他音乐播放器客户端的API:缺点就是必须安装相应的客户端程序

解决方案:
在插件初始化的时候,把相应的ffplay静态编译程序(静态编译的程序不依赖动态库,所以只需要一个文件即可执行)下下来,在需要播放音乐的时候直接调用该命令行程序。

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions