关于koa.js:麒麟操作系统-kylinos-从入门到精通-办公环境-第六十篇-KTV相关文件MKV的处理

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2303) 关键词:信创,麒麟零碎,linux,飞腾,arm,aarch,arm64,按键精灵 1.需要背景这一次理论适合需要背景是加入歌唱较量,从网上找到了相似KTV伴奏的文件。下载的MKV外面有有原唱和伴奏两条音轨,但因为较量选手较多,从流程管制上不容易治理。因些须要将原唱的音轨移除,就是本文要解决的问题。我在Windows 11下尝试了剪映(不反对)、Adobe Premiere(简单,没找到形式)以及尝试过间接用VLC Player间接提取音轨的形式,均没有解决我的问题。通过搜寻,所有的材料均指向了一个向MKVToolnix的软件,通过试用,简略好用,解决了MKV的问题,记录在此,心愿大家遇到的时候有用。 2.MKVToolNix装置一个好的习惯是,咱们先找找利用市场。好在利用市场中有这一款软件,咱们间接通过利用市场装置。截至发稿时,市场中的版本是45,而官网的版本曾经到了79(官网并没有提供arm64的最新安装包,如果要装须要本人编译)。关上的成果如下: 3.MKV解决实例图片的程序为操作程序,首先右击输出源空白区找到对应的MKV文件读取后,能够看到对应的MKV元素清单,有视频,多音轨,字幕以及其余根底信息等将不须要的音轨(或字幕)勾销勾选(具体是什么音轨,你须要在播放器中确认一下)本文中,确认第一条音轨是原唱,将其勾销勾选确认输入文件地位点击开始混流,保留在播放器中验证成果如下![上传中...]() 麒麟零碎专栏:https://segmentfault.com/blog/kylinos文章发表在SegmentFault分割邮箱:1179611323@qq.com群:662512340发行日志:20230922 首发

September 22, 2023 · 1 min · jiezi

关于koa.js:nodekoalogger

koa-logger源码解析以GET申请“/”为例子,koa-logger会打印以下日志: <-- GET /GET / - 790ms --> GET / 200 803ms 185b分为是申请与响应的日志 // koa-logger 主函数function dev (opts) { // print函数,默认参数为空时是调用console.log,如果有transporter选项,则调用transporter函数代替 const print = (function () { let transporter if (typeof opts === 'function') { transporter = opts } else if (opts && opts.transporter) { transporter = opts.transporter } return function printFunc (...args) { // 留神:这里做了格局说明符替换 const str = util.format(...args) if (transporter) { transporter(str, args) } else { console.log(...args) } } }()) return async function logger (ctx, next) { // request const start = ctx[Symbol.for('request-received.startTime')] ? ctx[Symbol.for('request-received.startTime')].getTime() : Date.now() // 打印申请日志 print(' ' + chalk.gray('<--') + ' ' + chalk.bold('%s') + ' ' + chalk.gray('%s'), ctx.method, ctx.originalUrl) try { await next() } catch (err) { // log uncaught downstream errors log(print, ctx, start, null, err) throw err } // calculate the length of a streaming response // by intercepting the stream with a counter. // only necessary if a content-length header is currently not set. // 通过应用计数器拦挡流来计算响应流的长度。只有在以后没有设置Content-Length的响应报头时才须要。 const length = ctx.response.length const body = ctx.body let counter if (length == null && body && body.readable) { ctx.body = body .pipe(counter = Counter()) .on('error', ctx.onerror) } // log when the response is finished or closed, // whichever happens first. // 记录响应实现或敞开的工夫,以先产生的工夫为准。个别都是触发finish事件 const res = ctx.res const onfinish = done.bind(null, 'finish') const onclose = done.bind(null, 'close') // 重点:判断一个流申请是否完结 res.once('finish', onfinish) res.once('close', onclose) function done (event) { res.removeListener('finish', onfinish) res.removeListener('close', onclose) // 打印 申请形式 门路 状态码 响应工夫 报文长度 log(print, ctx, start, counter ? counter.length : length, null, event) } }}还有个logger辅助函数: ...

August 30, 2022 · 3 min · jiezi

关于koa.js:KoaJS

前言koa致力于成为一个更小、更富裕表现力、更强壮的、更轻量的web开发框架。因为它所有性能都通过插件实现,这种插拔式的架构设计模式,很合乎unix哲学。一个简略的服务,如下:const Koa = require('koa') let app = new Koa() app.use((ctx, next) => { console.log(ctx) }) app.listen(4000)复制代码而后在浏览器端关上http://127.0.0.1:4000即可拜访若没有指定返回body,koa默认解决成了Not Found本文内容: 中间件原理(联合代码) 原理中间件实现思路了解上述洋葱模型 浏览源码 app.listen()ctx挂载内容 context.jsrequest.jsresponse.js挂载ctx next构建的洋葱模型 app.use((ctx, next) =< { ... })中间件含异步代码如何保障正确执行返回报文解决屡次调用next导致凌乱问题 基于事件驱动去解决异样 koa2, koa1 和 express区别 一、中间件原理(联合代码)原理 中间件执行就像穿梭洋葱一样,最早use的中间件,就放在最外层。解决程序横穿洋葱,从左到右,右边接管一个request,左边输入返回response;个别的中间件都会执行两次,调用next之前为第一次,调用next时把管制传递给上游的下一个中间件。当上游不再有中间件或者没有执行next函数时,就将顺次复原上游中间件的行为,让上游中间件执行next之后的代码; 如下代码:const Koa = require('koa')const app = new Koa()app.use((ctx, next) => { console.log(1)next()console.log(3)})app.use((ctx) => { console.log(2)})app.listen(9001) 执行后果是1=>2=>3复制代码中间件实现思路 留神其中的compose函数,这个函数是实现中间件洋葱模型的要害// 场景模仿// 异步 promise 模仿const delay = async () => { return new Promise((resolve, reject) => { setTimeout(() => { console.log('delay 2000ms') resolve();}, 2000);});}// 两头间模仿const fn1 = async (ctx, next) => { console.log(1); await next(); console.log(2);}const fn2 = async (ctx, next) => { console.log(3); await delay(); await next(); console.log(4);}const fn3 = async (ctx, next) => { console.log(5);} ...

July 14, 2022 · 3 min · jiezi

关于koa.js:适合-Kubernetes-初学者的一些实战练习-四

本系列前三局部: 适宜 Kubernetes 初学者的一些实战练习 (一)适宜 Kubernetes 初学者的一些实战练习 (二)适宜 Kubernetes 初学者的一些实战练习 (三)练习1 - Kubernetes pod 的主动 scale (程度主动伸缩)kubectl scale 命令用于程序在负载减轻或放大时进行 pod 扩容或放大,本练习咱们通过一个理论例子来察看 scale命令到底能达到什么成果。 命令行创立一个 deployment: kubectl run jerry-nginx --image=nginx:1.12.2 kubectl get deploy 查看刚刚创立的 deployment: 主动被 deployment 创立的 pod:kubectl get pod: 应用下列命令查看生成的 deployment 明细: kubectl get deployment jerry-nginx -o yaml 另一个有用的命令: kubectl describe deployment jerry-nginx 当初咱们应用上面的命令对 deployment 进行程度扩大: kubectl scale deployment jerry-nginx --replicas=3 kubectl get pods -l run=jerry-nginx下图这个 Age 为 15 分钟之前的是第一次创立 deployment 时生成的,其余两个 Age 为 1 分钟之前的是执行了 scale 命令后主动创立的。 ...

April 3, 2022 · 3 min · jiezi