【发布时间】: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