使用pytube以mp3格式下载视频

时间:2017-11-21 18:35:28

标签: python-3.x audio youtube-api file-format pytube

我一直在使用pytube在python中下载youtube视频。到目前为止,我已经能够以mp4格式下载。

yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")

vids= yt.streams.all()
for i in range(len(vids)):
    print(i,'. ',vids[i])

vnum = int(input("Enter vid num: "))
vids[vnum].download(r"C:\YTDownloads")
print('done')

我设法下载了'音频'版本,但它是.mp4格式。我确实尝试将扩展名重命名为.mp3,并播放了音频,但应用程序(Windows Media Player)停止响应并开始滞后。

如何以.mp3格式直接将视频下载为音频文件?请提供一些代码,因为我是使用此模块的新手。

感谢。

10 个答案:

答案 0 :(得分:2)

Pytube 不支持“mp3”格式,但您可以下载 webm 格式的音频。下面的代码演示了它。

    from pytube import YouTube
    yt = YouTube("https://www.youtube.com/watch?v=kn8ZuOCn6r0")
    stream = yt.streams.get_by_itag(251)

itag 是获取具有特定分辨率的文件的唯一 ID

    stream.download()

对于 mp3,您必须将(mp4 或 webm)文件格式转换为 mp3。

答案 1 :(得分:1)

  

如何将视频作为音频文件下载,格式为.mp3格式直接

我怕你不能。可供直接下载的唯一文件是yt.streams.all()下列出的文件。

但是,将下载的音频文件从.mp4转换为.mp3格式非常简单。例如,如果您安装了ffmpeg,则从终端运行此命令将起到作用(假设您在下载目录中):

ffmpeg -i downloaded_filename.mp4 new_filename.mp3

或者,您可以使用Python的subprocess模块以编程方式执行ffmpeg命令:

import os
import subprocess

import pytube

yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")

vids= yt.streams.all()
for i in range(len(vids)):
    print(i,'. ',vids[i])

vnum = int(input("Enter vid num: "))

parent_dir = r"C:\YTDownloads"
vids[vnum].download(parent_dir)

new_filename = input("Enter filename (including extension): "))  # e.g. new_filename.mp3

default_filename = vids[vnum].default_filename  # get default name using pytube API
subprocess.call(['ffmpeg', '-i',                # or subprocess.run (Python 3.5+)
    os.path.join(parent_dir, default_filename),
    os.path.join(parent_dir, new_filename)
])

print('done')

答案 2 :(得分:1)

我假设您使用的是Python 3和 pytube 9.x ,则可以使用filter方法来“过滤”您感兴趣的文件扩展名。

例如,如果您要下载mp4视频文件格式,它将类似于以下内容:

pytube.Youtube('url here').streams.filter(file_extension='mp4').first()

如果您要拉音频,它将类似于以下内容:

pytube.Youtube('url here').streams.filter(only_audio=True).all()

希望对任何登陆此页面的人有所帮助;而不是进行不必要的转换。

答案 3 :(得分:1)

使用此代码,您将从播放列表中下载所有视频,并以mp4和mp4音频格式将它们与youtube的标题一起保存。

在此问题中,我使用了@scrpy的代码以及@ Jean-Pierre Schnyder的提示 来自这个answer

{{1}}

答案 4 :(得分:1)

Pytube 不支持“mp3”格式,但您可以下载 webm 格式的音频。下面的代码演示了它。

    from pytube import YouTube
    yt = YouTube("https://www.youtube.com/watch?v=kn8ZuOCn6r0")
    stream = yt.streams.get_by_itag(251)
    stream.download()

对于 mp3,您必须将(mp4 或 webm)文件格式转换为 mp3。

答案 5 :(得分:0)

这是一种更苗条和密集的格式,用于下载mp4视频并将其从mp4转换为mp3:

下载会将文件下载到程序的当前目录或位置,这还将把文件转换为mp3作为新文件。

    from pytube import YouTube
    import os
    import subprocess
    import time
    while True:
            url = input("URL: ")
    # Title and Time
            print("...")
            print(((YouTube(url)).title), "//", (int(var1)/60),"mins")
            print("...")
    # Filename specification
    # Prevents any errors during conversion due to illegal characters in name
            _filename = input("Filename: ")
    # Downloading
            print("Downloading....")
            YouTube(url).streams.first().download(filename=_filename)
            time.sleep(1)
    # Converting
            mp4 = "'%s'.mp4" % _filename
            mp3 = "'%s'.mp3" % _filename
            ffmpeg = ('ffmpeg -i %s ' % mp4 + mp3)
            subprocess.call(ffmpeg, shell=True)
    # Completion
            print("\nCOMPLETE\n")

这是一个无限循环,将允许重命名,下载和转换多个URL。

答案 6 :(得分:0)

然后您需要安装pytubemp3(使用pip install pytubemp3)最新版本0.3 +,然后

from pytubemp3 import YouTube 
YouTube(video_url).streams.filter(only_audio=True).first().download()

答案 7 :(得分:0)

from pytube import YouTube

yt = YouTube(url)

yt.streams.get_audio_only().download(output_path='/home/',filename=yt.title)

答案 8 :(得分:0)

将视频下载为音频,然后将音频扩展名更改为 MP3:

from pytube import YouTube
import os

url = str(input("url:- "))
yt = YouTube(url)
video = yt.streams.filter(only_audio=True).first()
downloaded_file = video.download()
base, ext = os.path.splitext(downloaded_file)
new_file = base + '.mp3'
os.rename(downloaded_file, new_file)
print("Done")

答案 9 :(得分:0)

尝试使用:


    from  pytube import YouTube
    import os
        
    link = input('enter the link: ')
    path = "D:\\"                     #enter the path where you want to save your video
    video = YouTube(link)
    print( "title is : ", video.title)
     
#download video

    print("title is : ", video.title)
    video.streams.filter(only_audio=True).first().download( path , filename ="TemporaryName.Mp4" )

#remove caracters (" | , / \ ..... ) from video title

    VideoTitle =  video.title
    VideoTitle = VideoTitle.replace('\"' , " ")
    VideoTitle = VideoTitle.replace('|', " ")
    VideoTitle = VideoTitle.replace(',', " ")
    VideoTitle = VideoTitle.replace('/"' , " ")
    VideoTitle = VideoTitle.replace('\\', " ")
    VideoTitle = VideoTitle.replace(':', " ")
    VideoTitle = VideoTitle.replace('*"' , " ")
    VideoTitle = VideoTitle.replace('?', " ")
    VideoTitle = VideoTitle.replace('<', " ")
    VideoTitle = VideoTitle.replace('>"' , " ")

#change name and converting Mp4 to Mp3

    my_file = path + "\\" +  "TemporaryName.mp4"
    base = path + "\\" + VideoTitle
    print("New Video Title is :" +VideoTitle)
    os.rename(my_file, base + '.mp3')
    print(video.title, ' \nhas been successfully downloaded as MP3')