如何将 FileSync 音频作为字符串读取,然后将其作为音频写入 FileSync?
How do I readFileSync audio as a string and then writeFileSync it back as audio?
我有以下内容:
const fileAsString = fs.readFileSync('speech.mp3', { encoding: 'utf-8' })
const encryptedString = encrypt(fileAsString)
const decryptedString = decrypt(encryptedString)
console.log(fileAsString === decryptedString) // this returns true
fs.writeFileSync('speech_copy.mp3', decryptedString, { encoding: 'utf-8' })
speech_copy.mp3
已创建,但无法再播放,因为我弄乱了它的编码。
我在这个过程中做错了什么?我最初使用 { encoding: 'utf-8' }
读取文件的唯一原因是我可以对其进行加密然后再次解密。当我将它写回一个新文件时,我应该使用不同的 encoding
吗?
使用二进制数据的 base64 表示通常是更好的方法:
const fs = require('fs');
// binary -> base64
const fileAsString = fs.readFileSync('speech.mp3').toString('base64');
const encryptedString = encrypt(fileAsString);
const decryptedString = decrypt(encryptedString);
// base64 -> binary
fs.writeFileSync('speech_copy.mp3', Buffer.from(decryptedString , 'base64'));
我有以下内容:
const fileAsString = fs.readFileSync('speech.mp3', { encoding: 'utf-8' })
const encryptedString = encrypt(fileAsString)
const decryptedString = decrypt(encryptedString)
console.log(fileAsString === decryptedString) // this returns true
fs.writeFileSync('speech_copy.mp3', decryptedString, { encoding: 'utf-8' })
speech_copy.mp3
已创建,但无法再播放,因为我弄乱了它的编码。
我在这个过程中做错了什么?我最初使用 { encoding: 'utf-8' }
读取文件的唯一原因是我可以对其进行加密然后再次解密。当我将它写回一个新文件时,我应该使用不同的 encoding
吗?
使用二进制数据的 base64 表示通常是更好的方法:
const fs = require('fs');
// binary -> base64
const fileAsString = fs.readFileSync('speech.mp3').toString('base64');
const encryptedString = encrypt(fileAsString);
const decryptedString = decrypt(encryptedString);
// base64 -> binary
fs.writeFileSync('speech_copy.mp3', Buffer.from(decryptedString , 'base64'));