我订阅了YouTube上的各种免费音乐频道,我希望在.net程序中嵌入youtube-dl.exe来监控频道并下载和转换歌曲,因为它们会发布到频道。我已经得到了该程序的这一部分,但似乎有一个由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
我已经尝试了32位和64位版本的ffprobe.exe和ffmpeg.exe并下载了每个版本的新副本以排除损坏的exe
我已经通过我的程序和使用命令行下载了相同的结果
我尝试了各种不同的歌曲,所以它不只是一个视频
我已经在其他软件制作的歌曲上测试了ID3嵌入软件,并且没有问题
您可以提供有关此问题的任何帮助。
答案 0 :(得分:9)
我想出了这个问题,我将其发布在此处,以防其他人遇到同一问题。 问题是我在-o模板中指定了文件的完整路径。路径看起来像-o" c:\ music \ filename.mp3"将模板更改为-o" c:\ music \ filename。%(ext)s"解决了这个问题。 %(ext)s是一个特殊字段,可以在输出模板中用于输出文件扩展名。
导致错误的原因是转换操作的顺序。首先,文件以视频格式下载并保存到硬盘驱动器中。然后将其转换为.mp3并删除源文件。
由于我的模板,视频文件被保存为video_name.mp3,无论实际视频格式如何,转换后的文件都覆盖了此视频" mp3"。希望这个解释可以为其他人带来同样的麻烦。