2017-11-21 4 views
1

Ich habe pytube verwendet, um Youtube-Videos in Python herunterzuladen. Bisher konnte ich im mp4-Format herunterladen.Video im mp3-Format mit pytube herunterladen

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') 

ich es geschafft, die 'Audio' Version herunterzuladen, aber es war in .mp4 Format. Ich habe versucht, die Erweiterung in .mp3 umzubenennen, und das Audio wiedergegeben, aber die Anwendung (Windows Media Player) reagiert nicht mehr und es begann zu verzögern. Wie kann ich das Video als Audiodatei herunterladen, in .mp3 Format direkt? Bitte geben Sie einen Code ein, da ich neu mit diesem Modul arbeite.

Danke.

Antwort

1

Wie kann ich das Video als Audio-Datei herunterladen, in .mp3-Format direkt?

Ich fürchte, Sie können nicht. Die einzigen Dateien, die direkt heruntergeladen werden können, sind diejenigen, die unter yt.streams.all() aufgelistet sind.

Es ist jedoch einfach, die heruntergeladene Audiodatei von .mp4 zu .mp3 Format zu konvertieren. Zum Beispiel, wenn Sie ffmpeg installiert haben, diesen Befehl vom Terminal ausgeführt wird es tun (vorausgesetzt, Sie im Download-Verzeichnis sind):

ffmpeg -i downloaded_filename.mp4 new_filename.mp3 

Alternativ können Sie Python verwenden subprocess Modul den ffmpeg Befehl auszuführen programmgesteuert:

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') 
+0

Danke, aber wie kann ich das in Python (3.4) tun? –

+0

Gute Frage! Siehe Bearbeiten. – scrpy

Verwandte Themen