es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyTube descarga archivos de audio en formato mp4. ¿Cómo solucionarlo?

Buenas tardes. Soy principiante en Python. Estaba intentando hacer un descargador de audio y video de YouTube con PyTube (solo con fines educativos). He visto muchos videos en YouTube e intentaba hacer esta herramienta mejor. Así que he añadido la opción de elegir video/audio y la opción de elegir calidad/resolución. Lo bueno es que he logrado hacer el descargador de videos, pero tengo un problema con el descargador de audio. El problema es que PyTube descarga el archivo de audio en formato MP4. He buscado en Google y en YouTube, pero no he encontrado solución. Quiero renombrar el archivo de mp4 a mp3 (porque el archivo está bien, pero el formato es incorrecto). Como principiante, no sé cómo guardar un archivo descargado en alguna otra parte (carpeta temporal), renombrarlo y luego transferirlo a la carpeta de salida. Intenté añadir “filename=link.title+’mp3′”. Pero devuelve este error: “OSError: [Errno 22] Argumento no válido: ‘G:/Downloaded Videos/Latest English Ringtone | Turkish Bgm Ringtone 2021 | Bad Boy | Attitude Tone | Villain Ringtone.mp3′”. Aquí está mi código:

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución:

    Para descargar audio en formato mp3 usando PyTube, necesitas usar ffmpeg, que es un paquete separado, e instalarlo usando pip. Sigue los siguientes pasos para descargar audio en formato mp3.

    Paso 1:

    Instala ffmpeg usando pip. Usa el siguiente comando para instalar ffmpeg.

    pip install ffmpeg
    

    Paso 2:

    Importa el paquete ffmpeg y úsalo en tu código después de importar el paquete pytube. Aquí está el código actualizado:

    from pytube import YouTube
    import ffmpeg
    
    link='https://www.youtube.com/watch?v=KrhPrPK2owA'
    link=YouTube(link)
    print('Título:',link.title+'\n'+'Vistas:',link.views)
    streams=link.streams.filter(type='audio')
    kbps_list=[]
    itag_list=[]
    print('Kbps disponibles: ',end='')
    for s in streams:
        i=s.itag
        s=s.abr
        if s not in kbps_list:
            kbps_list.append(s)
            itag_list.append(i)
            print(s,end=' ')
    reso=input('\nIngresa los Kbps a descargar: ')
    if reso not in kbps_list:
        print('Estos Kbps no están disponibles')
        from sys import exit
        exit()
    reso=kbps_list.index(reso)
    final=streams.get_by_itag(itag_list[reso])
    print('Descargando...')
    video_path = final.download(filepath='/tmp/')
    audio_file = video_path.split('.')[0] + '.mp3'
    (
        ffmpeg
            .input(video_path)
            .filter('audio', codec='libmp3lame')       # Convertir el audio a formato mp3
            .output(audio_file, format='mp3')          # Guardar el archivo de audio en formato mp3
            .run()
    )
    print('Descarga Exitosa!')
    

    En este código actualizado, he agregado el paquete de ffmpeg y modificado el código para guardar el archivo de audio en formato mp3 en la carpeta tmp. Luego usa ffmpeg para convertir ese archivo de audio de formato mp4 a formato mp3 y lo guarda en la carpeta de salida con el mismo nombre.

    Puedes cambiar la carpeta de salida y el nombre del archivo según tus requerimientos.

Comments are closed.