este problema se puede solucionar de diversas formas, pero nosotros te compartimos la que en nuestra opinión es la respuesta más completa.
Solución:
¿Cómo puedo descargar el video como un archivo de audio, en formato .mp3? directamente?
Me temo que no puedes. Los únicos archivos disponibles para descarga directa son los que se enumeran en yt.streams.all()
.
Sin embargo, es sencillo convertir el archivo de audio descargado de .mp4
a .mp3
formato. Por ejemplo, si tiene ffmpeg instalado, ejecutar este comando desde la terminal funcionará (suponiendo que esté en el directorio de descarga):
$ ffmpeg -i downloaded_filename.mp4 new_filename.mp3
Alternativamente, puede usar Python’s subprocess
módulo para ejecutar el comando ffmpeg mediante programación:
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.run([
'ffmpeg',
'-i', os.path.join(parent_dir, default_filename),
os.path.join(parent_dir, new_filename)
])
print('done')
EDITAR: Se eliminó la mención de subprocess.call
. Usar subprocess.run
(a menos que esté usando Python 3.4 o inferior)
Supongo que estás usando Python 3 y pytube 9.xpuede usar el método de filtro para “filtrar”, la extensión de archivo que le interesa.
Por ejemplo, si desea descargar el formato de archivo de video mp4, se vería así:
pytube.Youtube('url here').streams.filter(file_extension='mp4').first()
si desea extraer audio, se vería así:
pytube.Youtube('url here').streams.filter(only_audio=True).all()
Espero que ayude a cualquiera que llegue a esta página; en lugar de convertir innecesariamente.
Te mostramos reseñas y calificaciones
Nos puedes añadir valor a nuestra información colaborando tu veteranía en las interpretaciones.