分类 默认分类 下的文章

有时购买服务器后,只给了个.key文件让你登录远程linux
Mac登录方法如下
先执行以下命令设置文件权限

chmod 600 key-file-path.key

再执行

ssh-add key-file-path.key

然后执行如下命令即可登录远程linux

ssh user@ip

有些user可以直接是root,有些不是
如果登录的不是root想切换到root,可以执行

sudo -i

Windows端推荐用FinalShell工具加载.key文件直接登录

有些Linux服务器自带防火墙规则,导致无法访问,可依次执行以下命令解决:

iptables -P INPUT ACCEPT
iptables -F

这个方法需要nvue,你可以新建项目时,把默认的index.vue改成index.nvue,然后用下面的代码全部覆盖

<script>
    export default {
        onLoad() {
            const url = 'http://tools.qvdd.cn/request-headers' // 改成你自己的链接
            const uaAppend = 'Your_UA' // 改成你自己的ua
            plus.navigator.setUserAgent(plus.navigator.getUserAgent() + ' ' + uaAppend)
            const sysInfo = uni.getSystemInfoSync()
            const styles = { // html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewStyles
                width: sysInfo.safeArea.width,
                top: sysInfo.statusBarHeight,
                bottom: 0,
                scalable: true, // 默认不能缩放,在访问PC页面时体验不好
                errorPage: '/hybrid/html/error.html' // 网页打不开时打开这个页面
            }
            const wv = plus.webview.open(url, 'id', styles)
            plus.key.addEventListener('backbutton', ()=>{
                wv.canBack((e)=>{
                    if (e.canBack) {
                        wv.back()
                    } else {
                        uni.showModal({
                            title: '是否退出App?',
                            success: (res) => {
                                if (res.confirm) {
                                    plus.runtime.quit()
                                }
                            }
                        })
                    }
                })
            })
        }
    }
</script>

其中的/hybrid/html/error.html可以自己放个漂亮的404模板,我是简单这样写的:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>error</title>
    </head>
    <body>
        <div style="padding: 15px;">
            网页打开失败
        </div>
    </body>
</html>

pages.json里设置"navigationStyle": "custom",隐藏顶部标题栏

网上找的node发邮件,用到最多的是nodemailer,于是利用百度出来的代码,直接运行在uniCloud,本地运行发送成功,但是云端一直报错。
仔细看了报错内容,提到Thread,所以猜测代码里新建了线程去发邮件。
为了找到如何用当前线程发,第一时间想到的是nodemailer的官方文档:https://nodemailer.com/about/
结合官方文档,写了个可以在uniCloud云端正常发邮件,并且亲测成功的代码:

'use strict';
const nodemailer = require('nodemailer') // 使用前先npm install nodemailer
exports.main = async (event, context) => {
    let transporter = nodemailer.createTransport({
        host: 'smtp.126.com',
        secureConnection: true,
        port: 465,
        secure: true,
        auth: {
            user: 'yourname@126.com',
            pass: 'SMTP授权码'
        }
    })
    const info = await transporter.sendMail({
        from: '"邮箱昵称"<yourname@126.com>',
        to: 'receiver@163.com',
        subject: '主题',
        html: '<h1>HTML代码</h1>',
        text: '文本'
    })
    if (info.messageId) {
        return {code: 0, msg: '发送成功'}
    } else {
        return {code: 1, msg: '发送失败', info}
    }
}

代码里最关键的是await transporter.sendMail这行,这样写才是在当前线程发

百度上找到的大部分人是这么写的:

transporter.sendMail(
    {
        from: '"邮箱昵称"<yourname@126.com>',
        to: 'receiver@163.com',
        subject: '主题',
        html: '<h1>HTML代码</h1>',
        text: '文本'
    },
    (error, info) => {
        if (error) {
            return console.error(error);
        }
        console.info(info)
    }
)

这样写的话会新建线程,这在普通的node环境当然没错,但是uniCloud却报了关于线程的错误,猜测是uniCloud不允许多线程

据说163或者126之类的普通邮箱,个人SMTP每天最多只能发50封,所以如果你是用在项目里,可以考虑阿里云的邮件推送,到达率高,速度快,而且又便宜,每日前200封还免费:链接直达

目前已知两种视频切片,一个是m3u8,一个是mpd

mp4转m3u8的命令:

ffmpeg -i principles.mp4 -vcodec copy -acodec copy -hls_time 360 -hls_list_size 0 index.m3u8

加密的m3u8视频:
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni4934e7b/50b072b0-6124-11eb-a16f-5b3e54966275.m3u8

未加密的m3u8视频:
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni4934e7b/53b1e0f0-6126-11eb-bdc1-8bd33eb6adaa.m3u8
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-d420af8e-bb77-43b2-89e4-7bd5880cf860/158f758c-ebe7-4a4e-8c52-a2d22c73b449.m3u8 (74.8MB)

利用ffmpeg命令可以直接保存m3u8到本地mp4:

ffmpeg -i https://vkceyugu.cdn.bspapp.com/VKCEYUGU-uni4934e7b/50b072b0-6124-11eb-a16f-5b3e54966275.m3u8 -c copy C:/Users/John/Desktop/output.mp4

将mp4转为mpd的命令:

ffmpeg -i wolf.mp4 -c copy -f dash -min_seg_duration 60000000 wolf.mpd

mpd的例子:
https://static-b905bdbb-5254-4483-af4c-16e5bf477a2e.bspapp.com/mpd/wolf.mpd

网页播放mpd文件需要dashjs,示例:
https://static-b905bdbb-5254-4483-af4c-16e5bf477a2e.bspapp.com/mpd/dash.html

下载方式跟m3u8一样:

ffmpeg -i https://static-b905bdbb-5254-4483-af4c-16e5bf477a2e.bspapp.com/mpd/wolf.mpd -c copy C:/Users/John/Desktop/output.mp4

需要主意的是,这个命令在ffmpeg 4.3版本无效,测试在4.2.2上是有效的,目前还不清楚为何官方在新版上反而不支持。