最新公告
  • 欢迎您光临小酒资源吧,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 【Javascript】视频本地一键切片上传至掘金,搭建自己的视频床

    【Javascript】视频本地一键切片上传至掘金,搭建自己的视频床 最后编辑:2020-09-01
    增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

    免责:本脚本仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请自行负责
    今年二月份的时候我发了下面这个帖子

    利用掘金搭建自己视频
    https://www.52pojie.cn/forum.php?mod=viewthread&tid=1110792&highlight=%CA%D3%C6%B5%B4%B2

    当时只是零散的记录了想法实现的过程,就没有再深入关注

    然后昨晚上太渴了,喝了4瓶红牛,睡不着了,闲的蛋疼,写了个一键脚本

    只需要你在脚本里定义好要切片上传的视频路径和临时文件存储路径,运行后就能得到一个m3u8的在线地址,和一个m3u8的播放器地址

    所有的资源都同步在掘金的cdn上,所以一点成本没有,国内访问速度还杠杆的,下面是实现截图


    我拿我电脑上珍贵的麻豆测试下,还是很不错的

    在线m3u8文件地址:https://user-gold-cdn.xitu.io/2020/7/12/17340116a0566a56

    播放器地址我暂时删了,毕竟车速太快了哈哈

    食用方法如下:

    第一:电脑安装ffmpeg
    安装方法:https://www.cnblogs.com/wuxun1997/p/12447190.html

    第二:电脑安装node环境,因为我脚本是用nodejs写的
    安装方法:https://jingyan.baidu.com/article/7082dc1c8a6bcca40b89bd0d.html

    最后新建个目录,在里面新建个app.js,把我下面的代码扔进去(修改视频文件地址为你自己的视频文件地址,修改缓存文件夹地址为你自己的文件夹地址)

    然后在当前目录下命令行执行npm i下载依赖

    依赖下载好后执行node app,等待进度跑完就可以在命令行看到生成的在线视频地址了

    其他的话,我注释写的很清楚了,有问题再问

    要是一会儿还睡不着的话,再考虑考虑写出带界面的软件,暂时将就下吧

    代码如下:

    [JavaScript] 纯文本查看 复制代码const exec = require(\’child_process\’).exec;
    const superagent = require(\’superagent\’);
    const { sleep } = require(\’sleep\’);
    const fs = require(\’fs\’);
    const glob = require("glob");

    const videoDir = \’./MD-0030.mp4\’;//视频路径
    const tsDir = \’./tmp/\’;//切片及m3u8文件存储路径
    const size = 1;//视频切片大小,数字越大单个切片时常越长体积越大,掘金图传限制最大图片大小为10M
    const content = `ffmpeg -i ${videoDir} -c copy -map 0 -f segment -segment_list ${tsDir}index.m3u8 -segment_time ${size} ${tsDir}%03d.ts`;//切片命令

    // 调用shell脚本方法
    async function shell(content) {
    return new Promise((resolve, reject) => {
    exec(content, (error, stdout, stderr) => {
    if (error) {
    reject(error);
    }
    else {
    resolve(stdout)
    }
    });
    })
    }

    // 上传到掘金方法(频繁重传)
    async function upload(path) {
    try {
    let s = await superagent.post(\’https://cdn-ms.juejin.im/v1/upload\’)
    .query({
    bucket: "gold-user-assets"
    })
    .attach(\’file\’, path, \’1.png\’)
    let url = s.body.d.url.https
    console.log(url)
    return url
    } catch (error) {
    // 出错表示掘金上传频繁拒绝了,暂停3秒继续请求
    sleep(3)
    console.log(error)
    return upload(path)
    }
    }

    (async () => {
    // 进行视频切片
    console.log(\’开始视频切片\’)
    await shell(content);
    console.log(\’视频切片完成\’)

    // 获取到切片列表
    let tsList = glob.sync(`${tsDir}*.ts`);

    // 获取到m3u8实体内容
    let m3u8Content = fs.readFileSync(`${tsDir}index.m3u8`).toString();
    // console.log(m3u8Content)

    console.log(\’开始上传切片\’)
    // 上传切片
    for (let index in tsList) {
    let ele = tsList[index]
    let tsName = ele.split(\’/\’)[ele.split(\’/\’).length – 1]
    // 执行上传
    let url = await upload(ele)

    // 获取到上传地址后替换原版的地址
    m3u8Content = m3u8Content.replace(tsName, url)

    // 删除已上传的ts
    fs.unlinkSync(ele)
    console.log(`上传成功,当前上传进度:${parseInt(index) + 1}/${tsList.length}`)
    console.log(\’==============================\’)

    }
    console.log(\’切片上传完成\’)

    // 获取到所有地址后,将新地址写出并同步上传到掘金
    fs.writeFileSync(`${tsDir}main.m3u8`, m3u8Content);
    let m3u8Url = await upload(`${tsDir}main.m3u8`)
    console.log(\’m3u8文件上传成功\’)

    // 构造在线播放地址
    let playUrl = `[url=https://badyun.gitee.io?url=]https://badyun.gitee.io?url=[/url]${encodeURIComponent(m3u8Url)}`
    console.log(\’==============================\’)

    // 清空文件缓存
    fs.unlinkSync(`${tsDir}index.m3u8`)
    fs.unlinkSync(`${tsDir}main.m3u8`)

    console.log(`m3u8在线链接:${m3u8Url}`)
    console.log(`视频在线播放器地址:${playUrl}`)
    })()

    猜你在找

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!603313839@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!

    小酒资源吧 » 【Javascript】视频本地一键切片上传至掘金,搭建自己的视频床

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    免责声明/技术服务/售后服务等
    本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!603313839@qq.com
    • 2020-09-01Hi,初次和大家见面了,请多关照!

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过500元的程序/模板免费一次安装,需提你供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、火车头规则、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-22:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 603313839@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款程序/模板/下载/有疑问,可以跟我联系哦!

    联系作者
    • 3732会员总数(位)
    • 4509资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 450稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
  • 2020 XiaoJiu8.cn - & WordPress Theme. All rights reserved 黔ICP备17003460号-5

  • XML地图 | 站长导航
         
    升级SVIP尊享更多特权立即升级