【问题标题】:Find time length of mp3 - python查找mp3的时间长度 - python
【发布时间】:2020-04-23 17:53:22
【问题描述】:

这是我的代码:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from pydub import AudioSegment
import os
from urllib.parse import urlparse, parse_qs, unquote
from pytube import YouTube# misc
import urllib.request
from moviepy.editor import *
import eyed3
import time

class ConvertToMp3:

    def convert(self,filename):

        path_list = filename.split("/")
        filename = path_list[len(path_list)-1]
        path_list.remove(filename)
        if(len(path_list)!=0 and path_list[0]==""):
            path_list.remove(path_list[0])
        path = ""

        for folder in path_list:
            path = path+"/"+folder

        extension = filename.split(".")[1]

        if path!="":
            audio = AudioSegment.from_file(path+"/"+filename, format=extension)
        else:
            audio = AudioSegment.from_file(filename, format=extension)
        audio.export("output files/"+filename.split(".")[0]+".mp3", format="mp3")

class ConvertFromYoutube:
    def download(self,video_url,**options):
        video_id = parse_qs(urlparse(video_url).query)['v'][0]
        video = YouTube('https://www.youtube.com/watch?v='+video_id)
        video.streams.get_by_itag(18).download("output files")
        title = video.title
        #print(title)
        thumbnail = video.thumbnail_url
        thumbnail_extension = thumbnail.split(".")
        thumbnail_extension = thumbnail_extension[len(thumbnail_extension)-1]
        urllib.request.urlretrieve(thumbnail, "output files/"+title+"."+thumbnail_extension)
        self.save_as_mp3(title,"song_artist","song_album","song_album_artist","*****")

    def save_as_mp3(self,song_title,song_artist,song_album,song_album_artist,song_rating):
        video = VideoFileClip(os.path.join("output files",song_title+".mp4"))
        video.audio.write_audiofile(os.path.join("output files",song_title+".mp3"))
        audiofile = eyed3.load(os.path.join("output files",song_title+".mp3"))
        audiofile.tag.artist = song_artist
        audiofile.tag.album = song_album
        audiofile.tag.album_artist = song_album_artist
        audiofile.tag.title = song_title
        print(audiofile.info.time_secs)
        audiofile_duration = time.strftime('%H:%M:%S', time.gmtime(audiofile.info.time_secs))
        print(audiofile.info.time_secs)
        print(audiofile_duration)
        audiofile.tag.save()

#test
#converter = ConvertToMp3()
#converter.convert("/home/chris/Μουσική/Απολυτίκιο Τριών Ιεραρχών.wav")

youtube = ConvertFromYoutube()
youtube.download("https://www.youtube.com/watch?v=JuYeHPFR3f0")

口袋妖怪主题曲youtube视频的时间为:3分21秒。

来自文件属性的相同信息:

但是print(audiofile.info.time_secs)

打印出 405.62361067503923。那是错误的,所以audiofile_duration = time.strftime('%H:%M:%S', time.gmtime(audiofile.info.time_secs))的计算也是错误的。

我该如何解决这个问题? 提前致谢, 克里斯·帕帕斯

编辑:

object_methods = [attr for attr in dir(audiofile.info) if not callable(getattr(audiofile.info, attr)) and not attr.startswith("__")]
        print(object_methods)

['bit_rate', 'bit_rate_str', 'lame_tag', 'mode', 'mp3_header', 'sample_freq', 'size_bytes', 'time_secs', 'vbri_header', 'xing_header']

【问题讨论】:

    标签: python-3.x audio time youtube mp3


    【解决方案1】:

    我在这里找到了解决方案:

    Finding the length of an mp3 file

    但如果无法使用这么多库,请随意寻找另一个答案。

    【讨论】:

      猜你喜欢
      • 2011-08-27
      • 2010-11-03
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多