Pad
Pad copied to clipboard
Bump express from 4.16.3 to 4.17.3
Bumps express from 4.16.3 to 4.17.3.
Release notes
Sourced from express's releases.
4.17.3
- deps: accepts@~1.3.8
- deps: mime-types@~2.1.34
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix handling of
__proto__
keys- pref: remove unnecessary regexp for trust proxy
4.17.2
- Fix handling of
undefined
inres.jsonp
- Fix handling of
undefined
when"json escape"
is enabled- Fix incorrect middleware execution with unanchored
RegExp
s- Fix
res.jsonp(obj, status)
deprecation message- Fix typo in
res.is
JSDoc- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: type-is@~1.6.18
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix
maxAge
option to reject invalid values- deps: proxy-addr@~2.0.7
- Use
req.socket
over deprecatedreq.connection
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- pref: ignore empty http tokens
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
4.17.1
- Revert "Improve error message for
null
/undefined
tores.status
"4.17.0
- Add
express.raw
to parse bodies intoBuffer
- Add
express.text
to parse bodies into string
... (truncated)
Changelog
Sourced from express's changelog.
4.17.3 / 2022-02-16
- deps: accepts@~1.3.8
- deps: mime-types@~2.1.34
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix handling of
__proto__
keys- pref: remove unnecessary regexp for trust proxy
4.17.2 / 2021-12-16
- Fix handling of
undefined
inres.jsonp
- Fix handling of
undefined
when"json escape"
is enabled- Fix incorrect middleware execution with unanchored
RegExp
s- Fix
res.jsonp(obj, status)
deprecation message- Fix typo in
res.is
JSDoc- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: type-is@~1.6.18
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- Fix
maxAge
option to reject invalid values- deps: proxy-addr@~2.0.7
- Use
req.socket
over deprecatedreq.connection
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
- pref: ignore empty http tokens
- deps: [email protected]
- deps: [email protected]
- deps: [email protected]
4.17.1 / 2019-05-25
... (truncated)
Commits
3d7fce5
4.17.3f906371
build: update example dependencies6381bc6
deps: [email protected]a007863
deps: [email protected]e98f584
Revert "build: use [email protected] for Node.js < 4"a659137
tests: use strict modea39e409
tests: prevent leaking changes to NODE_ENV82de4de
examples: fix path traversal in downloads example12310c5
build: use nyc for test coverage884657d
examples: remove bitwise syntax for includes check- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
-
@dependabot rebase
will rebase this PR -
@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it -
@dependabot merge
will merge this PR after your CI passes on it -
@dependabot squash and merge
will squash and merge this PR after your CI passes on it -
@dependabot cancel merge
will cancel a previously requested merge and block automerging -
@dependabot reopen
will reopen this PR if it is closed -
@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually -
@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) -
@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) -
@dependabot use these labels
will set the current labels as the default for future PRs for this repo and language -
@dependabot use these reviewers
will set the current reviewers as the default for future PRs for this repo and language -
@dependabot use these assignees
will set the current assignees as the default for future PRs for this repo and language -
@dependabot use this milestone
will set the current milestone as the default for future PRs for this repo and language
You can disable automated security fix PRs for this repo from the Security Alerts page.
初版使用ffmpeg二进制吧, 静态链接这块我目前还不会, 呜呜呜。 如果直接打包 ffmpeg 二进制文件的话应该还需要修改一下CI脚本。以及看到录播姬 有描述自己的 录制方案中有些优化的策略这块还没有学习,不知道ffmpeg能否实现, 感觉目前还道阻且长。
运行命令出黑框这个应该比较好解决。先用ffmpeg二进制, 我们先抽象出来录制这块然后后面再进行功能的改进好了
录播姬自己的说法应该是静态链接并且最小化ffmpeg代码了。只要是二进制的话我倒是有经验,无非就是调用command罢了~我也是觉得可以先搞搞二进制,方便太多了。
嗯嗯,先搞二进制, 然后静态链接肯定是要搞得。我们应该要追求相对完美.
顺便讨论一下下面这几方面
- 分离直播状态检测和直播源获取的逻辑, 因为注意到弹幕这块需要进行频繁获取。也能使代码更加规范
- record 这块的公共逻辑对于不是csv这种行数据的文件是否会不太友好 , 我印象中的字幕文件好像是类似于 xml 这种落后的结构化文件, 无法直接添加到后面, 这块是否可以提至不同方案自行实现?或者大佬有什么别的思路 https://github.com/Borber/seam/blob/a0f5d639a7835d13753c2ed29b0e517884926740/src/danmu.rs#L70-L79
- 畅想: 如果后期使用静态链接ffmpeg来录制, 是否就可以不用接口来判定直播状态, 而是视频录制状态来同时控制弹幕录制了
- 我觉得挺好,直播状态检测或许应该于所有功能分离,只要检测到直播结束,或许其他所有功能都可以直接关闭。
- 公共逻辑无所谓啦,不太了解xml,不过大部分格式应该可以直接append没毛病的。如果公共逻辑不符合某种格式,简单的覆盖就好。公共逻辑我感觉是不是主要考虑大部分格式都通用,避免重复写就好。
- 我感觉或许可以,但是应该影响不大吧,哈哈,感觉接口不太消耗cpu,就是需要等待网络IO。目前的程序我运行起来,哪怕记录弹幕,也是基本0%CPU占有率。
- 是的, 一是每次获取状态都会有很多不必要的计算, 二是为后续 server阶段单独提供直播状态接口, 缓存状态. 减少大量对官方平台的接口请求, 避免无意义的资源消耗. 我入手了一个比较便宜的 vps, 目前已经部署了 韩国平台 flex 的直播源请求, https://seam.borber.top/flex/356819 后续有想法提供在线api供 GUI 这边使用, 简单这边逻辑分离之后会节省大量资源
- 那这边公共逻辑就不改了, 遇到了我们再具体问题具体解决
- 低占用真的爽, 我目前部署的服务也只用了 6-7m 的内存, CPU 忽略不计. 对低配小鸡太有好了,
@eweca-d 大佬有一点不太明白, ffmpeg 编译版本看起来有 gpl 和 lgpl , bin 分发应该没有什么区别吧? 我是从这里下载的 https://github.com/BtbN/FFmpeg-Builds/releases
我感觉应该没啥区别吧,能用就行。
行的, 我明天尝试一下修改CI脚本, 支持上 arm 和 打包 ffmpeg 以及 config.json 这些到压缩包里
arm 打包 和 config 模块已加入, 但 ffmpeg 我还是没有添加进来,一方面时考虑 *unix 用户可能有自己的版本另一方面是也在寻找是否有相应的 crate可以满足需求, 引入一个 几十m的bin感觉还是太重了 想要体验的用户先自己放置 ffmpeg算了
https://github.com/zmwangx/rust-ffmpeg 这个 crate 好像比较多人用
我看了下他的doc,一个问题是,他只支持x86-linux。然后看了下这些库基本都链接的比如“ffmpeg_sys”这些底层库,然后这些底层库基本也只支持x86-linux。
我看了下他的doc,一个问题是,他只支持x86-linux。然后看了下这些库基本都链接的比如“ffmpeg_sys”这些底层库,然后这些底层库基本也只支持x86-linux。
https://github.com/zmwangx/rust-ffmpeg/wiki/Notes-on-building 好像 支持其他平台呀
还真是,我是看了api文档,上面platform只写着linux。
话说,没run成功,啥都设置好了,连build都能成功。但是run之后,哪怕不调用record函数,也会疯狂报错,说XXX.lib找不到,实际上环境变量“FFMPEG_DIR”里都有。。。。没搞懂了,要不你build下试试看,在main里加入ffmpeg::init().unwrap();
看看能不能run过?
https://github.com/zmwangx/rust-ffmpeg/issues/119 会不会是和这个一样? 需要手动复制点东西
我成功了,就是直接把lib随seam.exe一起放置就可以,然而悖论是,那些lib的总和远比ffmpeg.exe大。。。额,一个avcodec-59.dll
就73MB了,avfilter-8.dll
有38MB
这也太离谱了, 是否我们应该像这样精简 ffmpeg https://www.cnblogs.com/yongdaimi/p/16619804.html 然后随包分发,
那这类似于第三个方案了:
通过cc库使用静态链接到ffmpeg源代码
也不是不行,bilibili录播姬也是精简的ffmpeg,但是需要很懂ffmpeg的来操刀吧,我是基本只会调ffmpeg cli的水平。需要一个大手。
要不咱们直接强制调官方 ffmpeg吧, record里面直接检测, 然后输出wiki让用户自己安装ffmpeg,最后直接调用。 🤣 让用户用包管理器自己安装, scoop brew pacman 这种包管理器都支持。
或者还想到, 是否可以直接下载 flv 和 ts 切片, 后期单纯播放的话 flv 和 m3u 应该都比较好解决, 需要合成或者剪辑视频的自己会用剪辑软件, 事情就从录制转换成了下载
我感觉让用户自己下载和安装肯定是不太方便的吧,特别是win用户还得搞环境变量,要不然学习rustdesk这样,只有大功能更新才放一个标准release,然后做一个nightly pre-release,不停更新这样?而且如果没有大更新或者恶性bug可以不release。
另外,99%的使用者都是WIN使用者,可以考虑只在WIN版本放ffmpeg,其他版本放一个说明让包管理自己安装ffmpeg呗。
至于flv切片,比如M3U8的,一个切片仅有几秒钟,拿来放肯定也是不可能的了,拿来合成,那等同于还要让用户自己再下一个ffmpeg去合成与封装了。
还有一种办法就是,其他平台不知道啥情况,win是放在ffmpeg放在同一个文件夹里就能用,可以考虑添加一个自动下载ffmpeg.exe的功能。release的时候不加入ffmpeg.exe,然后第一次使用会提示没有ffmpeg,然后用reqwest下载ffmpeg?
我觉得最后一个办法比较好, windows 用户使用了 record 功能就提示用户可以自动下载, 我们提供速度较快的cdn, 然后 linux 或者 mac 就建议用户自行安装ffmpeg
我觉得最后一个办法比较好, windows 用户使用了 record 功能就提示用户可以自动下载, 我们提供速度较快的cdn, 然后 linux 或者 mac 就建议用户自行安装ffmpeg
一种方法是,直接连接到github的ffmpeg build。这个链接应该是可以一直使用的。好处是,官方build,信任度较高。缺点是,会同时下载ffplay.exe和ffprobe.exe。不过我感觉对于现在的带宽来说,下载30M和100M没啥区别了。
另一种方法是,其他的cdn甚至是自己的cdn。好处是只用ffmpeg.exe,压缩完大概只要30M吧。
或者都提供, 终端打印出来, 然后让用户手动放置?因为考虑官方的build还需要解压, 这样会添加无关的功能 🤣
以及目前在本地折腾server这块, mvp还没弄出来,所以没怎么提交代码。等 server 的mvp弄出来之后 就会开始分离开播检测和链接获取, 提取 core
解压倒是无所谓,可以直接使用zip之类的库完成,然后自动删掉多余的就好。我是比较推崇尽量少让使用者动手的。
期待server这方面的功能~
我觉得比较理想是使用录播功能时,发现ffmpeg不可用则提示是否需要自动下载ffmpeg到文件夹,是的话按个回车,然后下载好后开始录制。
我觉得比较理想是使用录播功能时,发现ffmpeg不可用则提示是否需要自动下载ffmpeg到文件夹,是的话按个回车,然后下载好后开始录制。
可以的, 给两个选项, 让用户选择官方或者我们提供的cdn? 考虑到国内 github 访问速度
有道理,我都忘了github不科学上网不太容易登陆了