【electron 5】electron将获取的Uint8Array转为中文

使用protobufjs:
安装:

yarn add global protobufjs
yarn add global protobufjs-cli

// 将项目中的*.proto文件编译成json文件
npx pbjs -t json electron/main/proto/*.proto > electron/main/proto/proto.json


可以在src/proto目录下生成一个proto.json文件,打包成js模块的命令:
npx pbjs -t json-module -w commonjs -o electron/main/proto/proto.js  electron/main/proto/*.proto

注:我这个.proto文件是公司c语言程序猿写的,所以拿过来直接执行转换js文件就可以使用了
使用:

var protoBuf = require('protobufjs');
import protoload from '../proto/Payload'
// 我这里没有用protobufjs在load方法内写,而是通过这种方式去引入的
var root = protoBuf.Root.fromJSON(protoload);
const AwesomeMessage = root.lookupType("NewmineMsg").ctor;


// 使用这个方式将我protobufjs转换为对象内到bytes用Text解码然后得到了没有中文乱码的文本
const textEncoder = new TextDecoder();
const decoded = AwesomeMessage.decode(buffer)
// 必须要注意这个object,原因是因为我遇到了一个深坑,就是因为.proto内部的时间类型是fixed64类型在我这里转换数据后,长度不一样,导致我这里的时间显示的unix时间戳转为字段是19几几年的,将long类型的设置为Number就好了
 const object = AwesomeMessage.toObject(decoded, {
        longs: Number,
        enums: String,
        bytes: String,
        // see ConversionOptions
    });
// 传送给渲染线程
mainWindow?.webContents.send(UI.GETNEWMESSAGE, {...object, message: textEncoder.decode(decoded.payloadBytes)})

学习博客地址:https://www.cnblogs.com/qianxiaox/p/14019522.html
npm包地址:https://www.npmjs.com/package/protobufjs

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Electron 静态应用环境中,想要将 WebM 格式的视频转换为 MP4,通常需要借助一些外部库和工具,因为 Electron 并没有内置的视频编码功能。一种常见的做法是使用 Node.js 中的第三方模块,如 `fluent-ffmpeg` 或者 `ffmpeg-static`。这里是一个简单的步骤: 1. **安装依赖**: 使用 npm 安装 ffmpeg 转码模块: ``` npm install fluent-ffmpeg --save ``` 或者如果需要静态版本的 ffmpeg,可以选择 `ffmpeg-static`: ``` npm install ffmpeg-static --save ``` 2. **编码转换**: 通过以下 JavaScript 代码片段进行 WebM 到 MP4 的转换: ```javascript const ffmpeg = require('fluent-ffmpeg'); const inputWebMPath = 'path/to/input.webm'; const outputMP4Path = 'path/to/output.mp4'; ffmpeg(inputWebMPath) .setFormat('mp4') .on('end', () => { console.log('Video conversion completed.'); }) .on('error', (err) => { console.error('An error occurred:', err); }) .save(outputMP4Path); ``` 或者如果是使用 ffmpeg-static: ```javascript const execFile = require('child_process').execFile; // ... 同样的输入输出路径 execFile( path.join(__dirname, '..', 'ffmpeg', 'bin', 'ffmpeg'), [ '-i', inputWebMPath, '-c:v', 'libx264', '-c:a', 'aac', '-b:a', '192k', outputMP4Path, ], (error, stdout, stderr) => { if (error) { console.error(`Error occurred: ${stderr}`); } else { console.log('Conversion complete.'); } }, ); ``` 3. **处理错误**: 确保处理可能发生的任何错误,并监听转换完成的事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值