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

标签 windows audio video youtube youtube-dl

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

这个问题似乎也影响了 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 嵌入软件,它没有问题

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

最佳答案

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

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

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

关于windows - 在 Windows 上使用 Youtube-dl 提取 MP3 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29268281/

相关文章:

windows - 获取文件名前的部分字符串作为目录

php - 如何为流音乐的iPhone应用程序设计后端(服务器端)

c# - 您推荐我使用哪种文件类型来播放非常小的视频?

年月的 Windows 环境变量

c++ - 如何将第三方库添加到 QtCreator?

Java获取麦克风分贝

ios - 将视频输出添加到 ARKit 应用

python - 使用 Flask 提供 .mp4 文件并在 Objective-C 应用程序上播放会导致管道损坏且无法播放

windows - 在 Windows 中,应用程序事件日志中有哪些默认事件源可用?

javascript - 在 Javascript/jQuery 中播放完声音后刷新页面