在 Windows 上使用 Youtube-dl 提取 MP3 的问题

Problems with extracted MP3 using Youtube-dl on Windows

我订阅了 YouTube 上的各种免费音乐频道,我希望将 youtube-dl.exe 嵌入到 .net 程序中以监控频道并下载和转换发布到频道的歌曲.我已经让程序的那部分工作正常,但 youtube-dl 生成的 mp3 文件似乎有问题。这些文件将在 VLC 和 Windows Media Player 中播放,但如果我尝试在 Audacity 或 Wavepad 等编辑器中打开文件,文件将无法播放,并且在打开文件时我看到以下错误 "Exception with MPEG Frame info: The data read as the MEPG header indicates a duration of zero"。在编辑器中播放时,会根据歌曲的长度播放一秒到几秒的噪音或失真的声音,并且曲目将显示为已播放完毕。

这个问题似乎也会影响 ID3 标签。一旦嵌入了 ID3 标签,文件就会播放一秒钟,然后在 windows 媒体播放器中显示完成,并且在 VLC 中播放时没有声音。然而,ID3 标签信息被拾取,因此文件没有损坏,删除 ID3 帧允许歌曲再次播放,但没有解决其他问题。

我使用的参数是: youtube-dl.exe videoURL-x --audio-format mp3 -o "path/filename.mp3"

我在撰写本文时拥有最新版本:2015-03-24,并且我都使用了 --update 标志并下载了一个新副本以排除损坏的 exe

我已经尝试了 ffprobe.exe 和 ffmpeg.exe 的 32 位和 64 位版本,并下载了每个版本的新副本以排除损坏的 exe

我已经通过我的程序和使用命令行下载了相同的结果

我试过各种不同的歌曲,所以这不仅仅是一个视频

我已经在其他软件制作的歌曲上测试了 ID3 嵌入软件,它没有问题

如果您能就此问题提供任何帮助,我们将不胜感激。

我发现了问题并将其发布在这里以防其他人遇到同样的问题。 问题是我在 -o 模板中指定了文件的完整路径。路径看起来像 -o "c:\music\filename.mp3" 将模板更改为 -o "c:\music\filename.%(ext)s" 解决了这个问题。 %(ext)s 是一个特殊的字段,可以在输出模板中用来输出文件扩展名。

导致错误的原因是转换的操作顺序。首先,文件以视频格式下载并保存到硬盘。然后将其转换为 .mp3 并删除源文件。

由于我的模板,视频文件被保存为 video_name.mp3,而不考虑实际的视频格式,并且转换后的文件覆盖了该视频 "mp3"。希望这个解释能为其他人省去我以后遇到的同样的麻烦。