【问题标题】:YTDL and FS creating broken mp3 on windows (node.js)YTDL 和 FS 在 Windows (node.js) 上创建损坏的 mp3
【发布时间】:2022-04-02 17:52:34
【问题描述】:

我正在尝试将 youtube 视频下载到 mp3 并在之后设置 mp3 ID3 标签。 我为此使用 node.js 和附加库node-id3。这个库确实适用于普通的 mp3 文件,设置艺术家或专辑等标签。 这是我正在使用的代码:

import nodeid3 from 'node-id3';
import ytdl from 'ytdl-core';
import fs from 'fs'
const tags = {
  title: "Yesterday",
  artist: "Kevin Penkin",
  album: "TV BlaBla",
  TRCK: "42",
};

function downloadYt() {
  console.log("start downloading");
  ytdl('https://www.youtube.com/watch?v=PvAOeAwadbI', {
    filter: 'audioonly',
    quality: 'highestaudio',
    highWaterMark: 1 << 25,
  }).pipe(fs.createWriteStream('./test_tags.mp3')).on('close',()=>{
    setTags('./test_tags.mp3');
    console.log("Tags set");
  });

}

function setTags(filepath) {
  nodeid3.write(tags, filepath)
}

下载文件时,生成的 mp3 文件“有点”损坏。它仍然可以播放,并且像mp3tag 这样的标签程序仍然可以识别提供的标签。

但是windows没有。 ID3 Tags的版本是2.3,但是windows不显示标签,windows不能编辑标签。这将导致0x8007000D 错误,通常以损坏的 mp3 标签 (google search) 着称。然而,使用小工具来修复 mp3 或使用 MP3Tag(通过删除所有标签)如许多论坛中所建议的那样并不能修复文件。该文件在这方面完全被破坏了。

我需要另一个选项来检索 ytdl 流(如果这是问题)或将流保存到 mp3(如果这是问题)。

【问题讨论】:

  • 你解决了这个问题吗?

标签: javascript node.js audio fs


【解决方案1】:

我遇到了同样的问题。我看起来正在输出的文件是以视频格式编码的。将输出文件的扩展名更改为 .mp4 并播放。我发现那行得通。抱歉,我帮不上忙。

编辑:将输出文件正式更改为.flv,然后音频文件即可播放

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 2023-03-12
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多