七牛云到底怎么在uniapp上传转码呢?


upload() {
  let that = this;
  return new Promise((resolve, reject) => {
    let key = new Date().getTime() + '.mp4';
    wx.showLoading({
      title: '正在上传',
      mask: true
    });
    wx.uploadFile({
      url: 'https://upload-z2.qiniup.com',
      filePath: that.dataURL, // 上传文件路径
      header: {
        'Content-Type': 'multipart/form-data'
      },
      name: 'file', // 上传文件名称
      formData: {
        token: that.token, // 上传凭证
        key: key,
 //我这里瞎猜的根本不生效。。。。   
        bucket: 'sdsd',
        fops: 'avthumb/mp4/ab/160k/ar/44100/acodec/libfaac/r/30/vb/1000k/vcodec/libx264/s/1280x720/autoscale/1/stripmeta/0',
        pipeline: 'gaoqing' // 指定转码管道
      },
      success: function(res) {
           console.log(res);
        wx.hideLoading();
        // 上传成功,返回七牛云存储中的文件路径
        resolve('dn.com/' + key,res);
      },
      fail: function(res) {
        wx.hideLoading();
        // 上传失败,返回错误信息
        reject(res.errMsg);
      }
    });
  });
},

qiniuyun() {
  let that = this;
  wx.cloud.callFunction({
    name: 'qiniuyun',
    success(res) {
      that.token = res.result.token;
      wx.chooseVideo({
        sourceType: ['album', 'camera'],
        maxDuration: 10,
        camera: 'back',
        success: function(res) {
          that.dataURL = res.tempFilePath;
          wx.showLoading({
            title: '正在上传',
            mask: true
          });
          // 调用上传函数,等待七牛云存储的返回值
          that.upload()
            .then(key => {
              wx.hideLoading();
              console.log('上传成功,文件路径为:', key);
            })
            .catch(errMsg => {
              wx.hideLoading();
              console.log('上传失败,错误信息为:', errMsg);
            });
        }
      });
    },
    fail(res) {
      console.log(res);
    }
  });
},



云函数


// 云函数入口文件
const cloud = require('wx-server-sdk')
const qiniu = require('qiniu')



cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

// 云函数入口函数
exports.main = async (event, context) => {
  var accessKey = '=2L';
var secretKey = 'XY';
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
var options = {
  scope: "sdsd",
  expires: 7200   ,
   // 指定转码管道
   returnBody: '{"key": $(key), "hash": $(etag), "fsize": $(fsize), "bucket": $(bucket), "name": $(fname)}'
  };
var putPolicy = new qiniu.rs.PutPolicy(options);
var uploadToken=putPolicy.uploadToken(mac);
const token = putPolicy.uploadToken(mac)
const filePath = event.filePath; // 从前端传入的视频文件路径
 console.log(token);
return{
  token,options
}
}

我思路就是从后端返回一个token 前端调用。。 发现如果后端指定了一个scope 的空间 前端无论如何修改buket都没什么用, 到底咋转码上传的?

以下回答引用自chatGpt, 有用的话,请采纳哇!!!
在uni-app中使用七牛云上传并转码,可以按照以下步骤进行:

  1. 在七牛云控制台中创建一个新的存储空间,并开启持久化处理功能。在持久化处理中,配置需要进行的转码操作,例如将视频转为 MP4 格式。
  2. 在 uni-app 中安装并导入 qiniu-js-sdk,该 SDK 是七牛云官方提供的 JavaScript SDK,用于在浏览器端实现文件上传功能。
  3. 在 uni-app 中实现文件上传功能,并在上传完成后,将文件的 URL 发送给后端服务。
  4. 在后端服务中,通过七牛云的 API,对上传的文件进行转码操作,并将转码后的文件 URL 返回给前端。

需要注意的是,七牛云的持久化处理需要消耗一定的费用,使用之前需要进行费用的评估和规划。此外,七牛云官方文档中也提供了详细的操作指南,可以帮助开发者更好地使用七牛云实现文件上传和转码功能。

正常 fop参数就是用来转码的,官方文档值得吐槽,不过还是建议看一下

https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows
https://developer.qiniu.com/kodo/1272/form-upload