簡體   English   中英

從 S3 下載 mp3 文件並對其進行操作會導致文件損壞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM