简而言之:我跑了:
sudo apt install youtube-dl ffmpeg id3v2 -y
echo "youtube-dl version:"
youtube-dl --version
echo "id3v2 version:"
id3v2 --version
youtube-dl --extract-audio --audio-format mp3 "https://youtu.be/Sqk3B2041uk" --output test.mp3
id3v2 -t "cooltitle" -a "coolartist" test.mp3
输出正常:
*normal output of apt install*
youtube-dl version:
2019.01.17
id3v2 version:
id3v2 0.1.12
Uses id3lib-3.8.3
This program adds/modifies/removes/views id3v2 tags,
and can convert from id3v1 tags
[youtube] Sqk3B2041uk: Downloading webpage
[youtube] Sqk3B2041uk: Downloading video info webpage
[download] test.mp3 has already been downloaded
[download] 100% of 2.07MiB
[ffmpeg] Post-process file test.mp3 exists, skipping
理论上,此脚本应下载一个 mp3 文件并将其标题设置为“cooltitle”,将其艺术家设置为“coolartist”。但是当我使用 rythmbox 打开文件 test.mp3 时,它没有显示正确的标题和艺术家。
有谁知道为什么这不起作用或者如何修复它?
答案1
youtube-dl 确实下载了两个都即使您指定了视频和音频,--extract-audio
您的语法也会混淆 youtube-dl 和 FFmpeg,因为它给出了相同的文件名对于两个流来说。
也许最容易修复(还有其他几种方法可以实现您的目标)是将您的 youtube-dl 语法更改为以下内容:
youtube-dl --extract-audio --audio-format mp3 \
"https://youtu.be/Sqk3B2041uk" --output "test.%(ext)s"
在我的系统上,这确实成功创建了一个 id3v2 可以处理的文件:
andrew@ilium~/tmp$ youtube-dl --extract-audio --audio-format mp3 \
> "https://youtu.be/Sqk3B2041uk" --output "test.%(ext)s"
[youtube] Sqk3B2041uk: Downloading webpage
[youtube] Sqk3B2041uk: Downloading video info webpage
[download] Destination: test.webm
[download] 100% of 2.07MiB in 00:02
[ffmpeg] Destination: test.mp3
Deleting original file test.webm (pass -k to keep)
andrew@ilium~/tmp$
注意默认情况下youtube-dl 下载了可用的最佳质量音频和视频,因此对于此特定剪辑,在 webm 容器中存在 Opus 音频和 VP9 视频。然后,FFmpeg 会按要求删除视频并转换音频,查看选项--keep-video
以了解其中的神奇之处 :)