我目前正在尝试如何在不在计算机上下载的情况下获得mp3格式的youtube视频的直接链接,所以我只需要获得指向互联网mp3文件的链接。我试图通过Python中的youtube_dl库来实现这一点。
我的代码:
import youtube_dl
link = 'https://www.youtube.com/watch?v=8fATAQtY9ag'
ydl_opts = {
'format': 'bestaudio'
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(link, download=False)
print(info['formats'][0]['url'])
我得到的结果:
[youtube] 8fATAQtY9ag: Downloading webpage
https://rr4---sn-gvnuxaxjvh-n8ves.googlevideo.com/videoplayback?expire=1667397364&ei=lCJiY6fjI7P97QSmxK_QCA&ip=95.72.245.107&id=o-AFd3ju7rPL4AbxE5TTqyDlwEVYa3O038Ljvp4iTFz594&itag=249&source=youtube&requiressl=yes&mh=6d&mm=31%2C29&mn=sn-gvnuxaxjvh-n8ves%2Csn-gvnuxaxjvh-n8vk&ms=au%2Crdu&mv=m&mvi=4&pl=22&gcr=ru&initcwndbps=1213750&vprv=1&mime=audio%2Fwebm&ns=BRs0-MEqtt1vrCzmr61YjwoI&gir=yes&clen=1668462&dur=253.441&lmt=1614142570111218&mt=1667375377&fvip=8&keepalive=yes&fexp=24001373%2C24007246&c=WEB&txp=1311222&n=c2zXxbznF8OLQmMbvo&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cgcr%2Cvprv%2Cmime%2Cns%2Cgir%2Cclen%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAPWkeRlVf2AmqbDFXrRJSLT0IMcLmlU4pQoMty5b7zzDAiEAw50GzyfT6NucOra_4kJ2BYfoPtWEa5lOCtQEcuF-Ekw%3D&sig=AOq0QJ8wRAIgFP0t2TNC_rvUpjX3Q6DqExtm0pQ5gSlYlpq_4iCv2r8CIFwzl_uW5aQ1knRCDfoVD9eVF4By4qaCBCEsZZKyPBba
这个长链接包含一个扩展名为weba的音频文件,但不是mp3文件。那么,有没有办法使用这个或任何其他库来解决这个问题?
YouTube从未有过MP3音频的纯音频视频格式,多年来也没有MP3音频的混合(音频+视频(格式。
您的选择是:
- 不使用mp3。这是一个明显的问题,但现在几乎所有的东西都支持mp4a,很多都支持opus。(如果您计划在浏览器中使用它,以下是AAC和opus的浏览器支持统计数据,以及MP3的比较数据(
- 如果你确实特别需要mp3,下载并转换另一种纯音频格式(目前,可以在mp4a或opus之间选择(。如果您安装了ffmpeg,并使用以下选项启用了该功能,则youtube dl/yt dlp中提供了该功能(请记住,还要将
format
与它们一起设置(:
{
'extractaudio': True,
'audioformat': 'mp3',
}
此外,我认为这里有一个有用的信息:YouTube将视频请求者的IP地址放在URL视频中,在一些视频中,它成为验证您身份的签名的一部分——在这种情况下,视频必须从同一IP地址下载。