7

我订阅了 YouTube 上的各种免费音乐频道,我希望将 youtube-dl.exe 嵌入到 .net 程序中以监控频道并下载和转换发布到频道的歌曲。我已经让程序的那一部分工作了,但 youtube-dl 生成的 mp3 文件似乎存在问题。这些文件将在 VLC 和 Windows Media Player 中播放,但如果我尝试在 Audacity 或 Wavepad 等编辑器中打开文件,文件将无法播放,并且在打开文件时出现以下错误“MPEG 帧信息异常: 作为 MEPG 标头读取的数据指示持续时间为零”。在编辑器中播放时,会根据歌曲的长度播放一秒到几秒的噪音或失真声音,并且曲目将显示为已完成播放。

这个问题似乎也影响了 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 嵌入软件,它可以正常工作

您可以在此问题上提供的任何帮助将不胜感激。

4

1 回答 1

14

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

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

由于我的模板,无论实际视频格式如何,视频文件都被保存为 video_name.mp3,并且转换后的文件会覆盖此视频“mp3”。希望这个解释可以为其他人省去我将来遇到的同样的麻烦。

于 2015-04-02T00:58:14.643 回答