[英]Downloading an mp3 file from S3 and manipulating it results in bad file
我做了一個腳本,從我的 S3 存儲桶下載 MP3 文件,然后在下載前進行操作(添加 ID3 標簽)。
它正在工作並且標簽已正確注入,但文件看起來已損壞且無法播放。 我仍然可以通過 MP3tag 看到我的標簽,因此其中包含數據,但沒有通過文件播放音頻。
這是我的代碼,試圖找出問題所在
const downloadFileWithID3 = async (filename, downloadName, injectedEmail) => {
try {
const data = await s3Client.send(
new GetObjectCommand({
Bucket: "BUCKETNAME",
Key: filename,
})
);
const fileStream = streamSaver.createWriteStream(downloadName);
const writer = fileStream.getWriter();
const reader = data.Body.getReader();
const pump = () =>
reader.read().then(({ value, done }) => {
if (done) writer.close();
else {
const arrayBuffer = value;
const writerID3 = new browserId3Writer(arrayBuffer);
const titleAndArtist = downloadName.split("-");
const [artist, title] = titleAndArtist;
writerID3.setFrame("TIT2", title.slice(0, -4));
writerID3.setFrame("TPE1", [artist]);
writerID3.setFrame("TCOM", [injectedEmail]);
writerID3.addTag();
let taggedFile = new Uint8Array(writerID3.arrayBuffer);
writer.write(taggedFile).then(pump);
}
});
await pump()
.then(() => console.log("Closed the stream, Done writing"))
.catch((err) => console.log(err));
} catch (err) {
console.log(err);
}
};
希望您能幫我解決這個奇怪的錯誤,在此先感謝!
好的,所以我已經想通了,而不是使用 stream 本身的塊,我使用了它工作的 s3 存儲桶中的 getSignedUrl。
感謝大家嘗試提供幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.